https://bugs.winehq.org/show_bug.cgi?id=50257
--- Comment #13 from Alex S iwtcex@gmail.com --- (In reply to Damjan Jovanovic from comment #12)
ELF's symbol handling is generally a nightmare,
Still, our nightmare implementation is supposed to be compatible with GNU's. It's quite concerning if Linux behaves differently.
Here, the user-defined malloc probably overrides libc's, resulting in a crash as it has different ABI/semantics, possibly corrupting memory too.
In Gen's case the code simply crashes on the first (libc's internal) memory allocation, which is to be expected. The Wine issue is a bit more interesting:
env LD_DEBUG=1 ./wine64 winecfg ... "calloc" in "libc.so.7" ==> 0x69626e00 in "ucrtbase.dll.so" reloc_jmpslot: *0x62245c18 = 0x69626e00 0084:err:heap:HEAP_GetPtr Invalid heap 0000000000000000! 0084:err:heap:HEAP_GetPtr Invalid heap 0000000000000000! "_execve" in "libc.so.7" ==> 0x6963e1d0 in "ucrtbase.dll.so" ... "_exit" in "libc.so.7" ==> 0x69617190 in "ucrtbase.dll.so" ...