[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