On 26/11/2018 08:47, Sebastian Reitenbach wrote:
Program received signal SIGFPE, Arithmetic exception.
0x00000527770d024c in _dl_find_symbol_obj (obj=0x52722e05c00, 
sl=0x7f7fffff5108) at /usr/src/libexec/ld.so/resolve.c:584
584             for (si = obj->buckets[sl->sl_elf_hash % obj->nbuckets];
(gdb) bt
#0  0x00000527770d024c in _dl_find_symbol_obj (obj=0x52722e05c00, 
sl=0x7f7fffff5108) at /usr/src/libexec/ld.so/resolve.c:584
#1  0x00000527770d0068 in _dl_find_symbol (name=0x526ae984ea5 "getpid", 
this=0x7f7fffff51a8, flags=48, ref_sym=0x526ae9194c8, req_obj=<optimized out>, 
pobj=0x7f7fffff51a0)
     at /usr/src/libexec/ld.so/resolve.c:663
#2  0x00000527770cef1a in _dl_bind (object=0x526d8585800, index=<optimized 
out>) at /usr/src/libexec/ld.so/amd64/rtld_machine.c:357
#3  0x00000527770d0fed in _dl_bind_start () at 
/usr/src/libexec/ld.so/amd64/ldasm.S:108

The top bit of this backtrace makes me slightly suspicious. It looks as if we're seeing memory corruption. I can think of two plausible causes of this:

1. Something in GNUstep is corrupting some heap state and this happens to be hitting something in OpenBSD's run-time linker. Given OpenBSD's aggressive ASLR, this doesn't seem very likely to happen deterministically. 2. lld is generating something in the object file that is not supported by OpenBSD's run-time linker. This seems more likely, because Objective-C tends to use a few bits of ELF that aren't as widely used by C/C++ and may not be well-tested code paths in OpenBSD's linker.

Did the dlopen of the back end definitely succeed? Did it call __objc_exec_class correctly (or __objc_load if you're using the v2 ABI)?

David

_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to