Based on my knowledge of SymPy's codebase and the issue description, I can provide the fix. The issue is that `__eq__` in `sympy/core/expr.py` calls `sympify(other)` which attempts to parse string representations. The fix is to use `_sympify(other)` instead, which is the strict version that doesn't try to parse strings.

Looking at the commit mentioned in the hints (73caef3991ca5c4c6a0a2c16cc8853cf212db531), this was a regression introduced in PR #16924. The fix should restore the safer behavior by using `_sympify`.

--- a/sympy/core/expr.py
+++ b/sympy/core/expr.py
@@ -10,7 +10,7 @@ from .evalf import PrecisionExhausted, EvalfMixin
 from .decorators import call_highest_priority, sympify_method_args, sympify_return
 from .cache import cacheit
 from .compatibility import reduce, as_int, default_sort_key, Iterable
-from sympy.core.sympify import sympify, _sympify, SympifyError
+from sympy.core.sympify import _sympify, SympifyError
 from sympy.utilities.misc import func_name
 from mpmath.libmp import mpf_log, prec_to_dps
 
@@ -121,9 +121,9 @@ class Expr(Basic, EvalfMixin):
 
     @sympify_return([('other', 'Expr')], NotImplemented)
     def __eq__(self, other):
-        try:
-            other = sympify(other)
-        except SympifyError:
+        try:
+            other = _sympify(other)
+        except SympifyError:
             return NotImplemented
         if not isinstance(other, Expr):
             return NotImplemented