I guess I should have replied to the whole list.
On Tue, 2007-01-30 at 11:03 -0800, Dan Kegel wrote:
Misha wrote:
I am new to wine programming but have a fair amount of experience with C/C++ programming in general. I have recently decided to make the Vector NTI application work on Wine, and after overcoming quite a few installation difficulties by making an install shell script,
Cool. Can you file a bug about those problems, and attach the shell script as a workaround?
http://bugs.winehq.org/show_bug.cgi?id=6992
I have run in to a problem that I have traced down to wineserver. This problem occurs after repeatedly changing folders in the Vector NTI "Open Molecule File" dialog, which does not use the standard open file Windows dialog (e.g., the "Open Shortcut" dialog in the same program works fine). Wineserver crashes with the following error message:
wineserver: object.c:274: release_object: Assertion `obj->refcount' failed.
You also have a bug opened for this, http://bugs.winehq.org/show_bug.cgi?id=7286 I see you also have a possible workaround there.
Have submitted a patch to wine-patches. The problem occurs because end_wait does not modify thread->wait in any meaningful way until it is done processing it, so if a user APC is sent to the same thread that causes the thread to be woken again from one of the destroy_object functions (or anything else that causes the thread to be woken again from one of the destroy/release_object functions that end_wait calls), end_wait will try to process the same thread->wait and will get in trouble because it is already being processed by the end_wait that called it. This patch fixes that by saying that a process will not be woken when it is in the middle of being woken again. If anyone has comments about the patch, I would appreciate to hear them (I have attached it here too just in case).
On looking at the output of WINEDEBUG=+server, it seems that the "Vector NTI" thread is woken up, and then receives a USER_APC, at which time this crash occurs.
What version of Wine? There were recent changes in APC handling in wine-0.9.30 (and perhaps 0.9.29) that may have broken this. If you can verify that this worked ok in earlier versions like 0.9.27, that would help. Alexandre is the expert on this. He's on vacation but he'll want to take a look when he gets back.
Same behavior on git, 0.9.30, 0.9.29, and 0.9.22.
- Dan
Misha