[Bug 49437] Segmentation fault (core dumped) even on winecfg or wineconsole on FreeBSD
WineHQ Bugzilla
wine-bugs at winehq.org
Sun Nov 15 02:11:01 CST 2020
https://bugs.winehq.org/show_bug.cgi?id=49437
Damjan Jovanovic <damjan.jov at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|-unknown |ntdll
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #13 from Damjan Jovanovic <damjan.jov at gmail.com> ---
I am pretty sure I figured this out after 2 days of git bisect, after Wine on
FreeBSD 12.2 started crashing non-stop while 12.1 worked.
The attempt by FreeBSD developers to preserve binary compatibility didn't go
too well. To quote from my patch:
/* l_addr changed meaning from absolute load address (which is now
l_base)
* to relocation offset, but also got moved within the struct, breaking
* the ABI via struct layout change:
*
* OLD header: NEW header:
* typedef struct link_map { typedef struct link_map {
* caddr_t l_addr; caddr_t l_base;
* ... ...
* ... caddr_t l_addr;
* }; };
*
* OLD ld-elf.so: NEW ld-elf.so:
* ... exports _rtld_version_laddr_offset
*
* Since the header change and rtld change aren't coupled, we have to
* worry about the interaction between link.h version at compile time,
* and ld-elf.so version at runtime...
I've submitted a patch that seems to get it working:
https://source.winehq.org/patches/data/195960
It should allow a Wine binary to work correctly on all FreeBSD 12.x versions,
whether they have that ld-elf patch or not, and regardless of the link.h header
used at compile-time. All 4 combinations of old/new header vs library are
handled correctly.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list