Sorry, Wrong Number: Debugging a Crash Under Wine
blog.jchw.io
blog.jchw.io
"For compatibility reasons, this feature is disabled by default and must be enabled on a per-application basis. This is because some 64-bit applications have latent pointer truncation issues that can surface when dealing with pointers above 4 GB (significant bits set beyond bit 31)."
Although OP had an issue with an offset rather than an absolute position, I imagine it would also handle that case.
[1] https://msrc-blog.microsoft.com/2013/12/11/software-defense-...
(I bet my own debugging workflows and habits are stuffed full of this kind of "works but is definitely not optimal" move, though, so I don't mean this as a criticism of the article.)
https://github.com/rr-debugger/rr/issues/1687
By the time I got to the point where a reverse continue would’ve been most useful, I’d already left rr due to this issue.
Step 1. Learn Windows programming.
Step 2. Then learn Linux programming, the Wine architecture, X86 assembly, low level debugging etc.
Step 3. Draw the rest of the owl.
Nonetheless it's a good place to start:
https://wiki.winehq.org/Developer_Hints
https://wiki.winehq.org/Wine_Developer%27s_Guide
The days when fixing games involved just straight implementation of simple library calls were mostly over, even back when I was doing this a long time ago. Broken apps or games are much more likely to be hitting obscure "bugs" in Wine (which can mean failure to replicate Windows bugs), or other even more subtle compatibility issues, like the one this blog post documents.
This was 2006 and there were only about 5000 people in Google engineering worldwide, so it was quite a prestigious offer. Friends/family actually couldn't quite believe it because the media was full of stories about how selective they were. The company's reputation was stellar, the pay was good and so it made sense.
Also, CodeWeavers had started getting into the Mac port around that time. The main reason I worked on Wine was to try and support the free Linux desktop. Writing code to benefit Apple didn't appeal. I figured if that was the choice I may as well just go work on something fully proprietary but that worked on Linux anyway (like ... Google's web apps).
If you're debugging a thing in Proton, you'll want to use that project environment instead of Wine's directly, but the concepts are the same.
Yeah I had the same problem and never solved it. In fact I don't think I even got a handle on what the problem is at all. In what format are symbols created by mingw-gcc (I think PDB??) and in what format either Wine's debugger or GCC can consume symbols (DWARF???)
The standard tool to use for Wine is winedbg, but as I wrote, this doesn’t work here because there’s no way to break before the application entrypoint (which is too late.)