Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 438532

Summary: app-emulation/wine - crash in new Lord of the Rings Online expansion
Product: Gentoo Linux Reporter: Daniel Santos <daniel.santos>
Component: Current packagesAssignee: Wine Maintainers <wine>
Status: RESOLVED FIXED    
Severity: normal Keywords: PATCH
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
See Also: http://bugs.winehq.org/show_bug.cgi?id=31979
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: fix for bug

Description Daniel Santos 2012-10-16 01:17:49 UTC
Created attachment 326670 [details, diff]
fix for bug

So the Lord of the Rings Online's long awaited Riders of Rohan expansion released today, with mounted combat and loads of other shiny stuff.  However, it crashes in wine. A fix is available, but tons of people are dying to play now and my inbox feels like the target of their frustration, desperation and/or ire (as I am the appdb maintainer for LoTRO).

Can we release a wine 1.5.15-r2 with this patch cherry picked in?  The patch may or may not make it into 1.5.16 and even if it does, it isn't likely to be in the next few days.

Thanks
Comment 1 Alexandre Rostovtsev (RETIRED) gentoo-dev 2012-10-16 18:13:46 UTC
Generally, I am reluctant to add a patch that had not been reviewed by upstream wine developers. On the other hand, LOtRO is a rather popular game, and the patch is very simple, so I could make an exception *provided that you explain in detail why the patch is correct*.

For example, why are you assuming that MapWindowPoints() returning zero is always an error? MSDN documentation says that MapWindowPoints() can return zero on success. Is this something specific to the wine implementation of the function, or is it for bug-compatibility with windows, or ...?
Comment 2 Daniel Santos 2012-10-16 21:10:52 UTC
Well, you are indeed correct.  It looks like the proper implementation would be:

return MapWindowPoints( 0, hwnd, lppnt, 1 ) != 0 || !GetLastError();

However, after reviewing of MapWindowPoints, I can see at least one condition where it will return zero for error, but not set the last error (e.g., passing a null handle), so it looks like MapWindowPoints needs to be fixed to make this 100% correct.  But at least that condition can only occur if two windows are right on top of each other, or you are comparing a window with no borders (like a full-screen app) to the desktop.

The patch as-is is still "more" correct than it was.  So what do you think?

At least somebody put together a Ubuntu binary for these guys, that's reduced the spam a lot.
Comment 3 Daniel Santos 2012-10-16 21:20:08 UTC
Hmm, actually that wont work either and may break other stuff since any existing "last error" wont be cleared and will be mis-read as an error when calling ScreenToClient().  Let's work this out upstream first so we don't break other apps while fixing one.
Comment 4 William Hubbs gentoo-dev 2012-10-19 16:26:07 UTC
If mount shows that devpts and /dev/shm are mounted, they are, so there
isn't enough information in this bug for me to even begin to
troubleshoot this.

Please upgrade again, set rc_logger="YES" in /etc/rc.conf, then reboot
and attach the following information:

1) emerge --info
2) /var/log/rc.log.

Please re-open this bug when you can provide that information.

Thanks,

William
Comment 5 William Hubbs gentoo-dev 2012-10-19 16:36:56 UTC
Sorry folks, I closed the wrong bug.
Comment 6 Alexandre Rostovtsev (RETIRED) gentoo-dev 2012-11-24 23:09:36 UTC
Fixed in wine-1.5.18