Freeze in Agent 2.0 beta.

Rein Klazes rklazes at xs4all.nl
Sun Nov 16 02:47:10 CST 2003


On Sat, 15 Nov 2003 16:41:44 -0800, you wrote:

> Rein Klazes <rklazes at xs4all.nl> writes:
> 
> > I looked at many of these sequences. In all of them the subthread
> > finished well before the main thread executed its Wait. I was looking
> > for timing differences between the processing of the two threads,
> > checking whether and when the WM_NULL message gets processed. Nothing
> > seems to stand out.
> >
> > Any suggestions how to debug this?
> 
> It's a bug in Agent, it is waiting on a handle that it has already
> closed. It works in most cases because the handle is simply invalid,
> but from time to time the handle has already been reused and the wait
> blocks.

Bugs in Agent are quite possible of course. I will send the makers bug
reports but I start looking at these problems assuming at first they are
Wine problems.

The maker seem to think that the handle must be closed both by
sub-thread and main thread before it is removed. That is how I read the
traces as well. So that is not true?


> I guess if it never happens under Windows then it's probably
> because there's somewhere that we allocate a handle that Windows
> doesn't. You should look where the 0xcc handle got reallocated the
> last time.

It must be here :

| 0023:Call ntdll.RtlAllocateHeap(40340000,00000000,00000080) ret=4076cd9c
| 0009:Call ntdll.RtlFreeHeap(40340000,00000000,403f0ca0) ret=40772536
| 0009: create_semaphore( initial=00000000, max=00000001, inherit=0, name=L"" )
| 0009: create_semaphore() = 0 { handle=0xcc }
| trace:ntdll:NTDLL_wait_for_multiple_objects count 1 timeout 0x406cf928
| 0009: select( flags=12, cookie=0x406cf82c, timeout=1068729674.153190 (+4.999948), handles={0xcc} )
| 0009: select() = PENDING
| 0023: release_semaphore( handle=0xcc, count=00000001 )
| 0009: *wakeup* signaled=0 cookie=0x406cf82c
| 0023: release_semaphore() = 0 { prev_count=00000000 }
| 0023:Ret  ntdll.RtlAllocateHeap() retval=40400e78 ret=4076cd9c
| 0023: get_window_children( parent=0x1002c, atom=0000, tid=0000 )
| 0023: get_window_children() = 0 { count=0, children={} }
| 0023:Call ntdll.RtlFreeHeap(40340000,00000000,40400e78) ret=4076ce3b
| trace:ntdll:NTDLL_wait_for_multiple_objects count 1 timeout 0x422ff0d0
| 0023: select( flags=12, cookie=0x422fefd4, timeout=1068729674.153927 (+4.999945), handles={0xcc} )
| 0023: select() = PENDING
| 0009: release_semaphore( handle=0xcc, count=00000001 )
| 0023: *wakeup* signaled=0 cookie=0x422fefd4
| 0009: release_semaphore() = 0 { prev_count=00000000 }
| 0009:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=40772536
[snip]
| 0023:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=4076ce3b    


Rein.   
-- 
Rein Klazes
rklazes at xs4all.nl



More information about the wine-devel mailing list