[Bug 59979] New: Stack canary issue on musl prevents dotnet40 from installing or functioning
http://bugs.winehq.org/show_bug.cgi?id=59979 Bug ID: 59979 Summary: Stack canary issue on musl prevents dotnet40 from installing or functioning Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@list.winehq.org Reporter: dancingmirrors@icloud.com Target Milestone: --- Distribution: --- Created attachment 81381 --> http://bugs.winehq.org/attachment.cgi?id=81381 musl stack canary and seccomp filter Hi there. I use musl and build wow64 Wine and noticed that no version of dotnet40 would install properly. At first I thought it was because I had staging patches but then I tried in a Debian chroot and it installed fine so I kept digging with seh logging. It seems that unwind keeps tripping over itself during the install so I figured out a way to install it manually, but then my sample program would just segfault. I don't fully understand the implications but the attached patch seems to work for my Hello, World! .NET program as well as the installation. Any ideas? It seems to be an interaction with -fstack-protector-strong. The second hunk is for Wine Staging but I figured it wouldn't hurt to keep in the attachment since it probably doesn't affect glibc either. The patch applies to master but I was only able to test up to 11.5 due to build issues. -- 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.
http://bugs.winehq.org/show_bug.cgi?id=59979 Zeb Figura <z.figura12@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com --- Comment #1 from Zeb Figura <z.figura12@gmail.com> ---
It seems that unwind keeps tripping over itself during the install so I figured out a way to install it manually, but then my sample program would just segfault.
What's being unwound? Is there a crash in Unix code?
The patch applies to master but I was only able to test up to 11.5 due to build issues.
Uh, no it doesn't. install_bpf() isn't part of current wine or wine-staging; it's been replaced by a different mechanism upstream. What build issues are you having? -- 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.
http://bugs.winehq.org/show_bug.cgi?id=59979 --- Comment #2 from dancingmirrors@icloud.com --- Created attachment 81384 --> http://bugs.winehq.org/attachment.cgi?id=81384 seh debug -- 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.
http://bugs.winehq.org/show_bug.cgi?id=59979 --- Comment #3 from dancingmirrors@icloud.com --- Good news first, I was able to get Wine 11.12 running so we're on the same page. But I get the same crash with winetricks -q dotnet40 and instead of guessing I'm attaching the seh log. I will test if my attached patch (the first hunk) still fixes it when I can. -- 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.
http://bugs.winehq.org/show_bug.cgi?id=59979 --- Comment #4 from dancingmirrors@icloud.com --- Wine 11.12 without any staging patches, to clarify. None of my own patches actually. The earlier build/runtime issues I had around 11.6 seemed to be from PE/.so changes. -- 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.
http://bugs.winehq.org/show_bug.cgi?id=59979 --- Comment #5 from dancingmirrors@icloud.com --- I'm having trouble getting a non-distribution version of Wine going at the moment as the installed result just crashes endlessly for various reasons but I think my patch isn't really addressing the real problem. static int libc_addr_cb( struct dl_phdr_info *info, size_t size, void *arg ) { const char *p; if ((p = strrchr( info->dlpi_name, '/' ))) ++p; else p = info->dlpi_name; if (strcmp( p, "libc.so.6" )) return 0; } Maybe there's a better way to check this kind of thing? -- 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.
http://bugs.winehq.org/show_bug.cgi?id=59979 --- Comment #6 from dancingmirrors@icloud.com --- Created attachment 81388 --> http://bugs.winehq.org/attachment.cgi?id=81388 seh debug successful install -- 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.
http://bugs.winehq.org/show_bug.cgi?id=59979 --- Comment #7 from dancingmirrors@icloud.com --- For what it's worth the dotnet40 install finishes with the first hunk of the patch. -- 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.
participants (1)
-
WineHQ Bugzilla