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