diff --git a/src/object.c b/src/object.c
index e930f1f6d8f38a9d407cb741d0bd3bc823173b72..645cd56db6beefb3916e8778434d343e1a3962bc 100644
--- a/src/object.c
+++ b/src/object.c
@@ -1953,6 +1953,11 @@ PMOD_EXPORT int object_equal_p(struct object *a, struct object *b, struct proces
 	 IDENTIFIER_IS_ALIAS(i->identifier_flags))
 	continue;
 
+      /* Do we want to call getters and compare their return values?
+       *        - arne
+       */
+      if (i->run_time_type == PIKE_T_GET_SET) continue;
+
       if(i->run_time_type == T_MIXED)
       {
 	if(!low_is_equal((struct svalue *)LOW_GET_GLOBAL(a,e,i),
diff --git a/src/testsuite.in b/src/testsuite.in
index cf1bc945f0eb4cb42bfec4a30db05571420bece8..d488c3794522162ec13d331d39495ca7afaf7dc9 100644
--- a/src/testsuite.in
+++ b/src/testsuite.in
@@ -4085,6 +4085,16 @@ test_any([[
   return Y(5)->x;
 ]], 7)
 
+test_any([[
+  // Triggered fatal since object_equal_p did not handle
+  // getter/setter identifier correctly
+  class A {
+    string `foo() { return "bar"; }
+  }
+
+  return equal(A(), A());
+]], 1)
+
 test_eval_error([[
   // Triggered infinite recursion and core dump.
   // cf LysLysKOM 18719518/Pike mailinglist 12047.