> On Nov. 15, 2012, 9:17 p.m., Cliff Jansen wrote: > > I am going to disagree (with the proposed patch, and agree with Andrew). I > > managed to reproduce (took closer to 15 minutes on my laptop) and get a > > similar stack trace. > > > > I see a shared_ptr with non-null value and use_count of 3. impl->get() > > would also return true and trigger the assert. > > > > On a separate thread, I see the same PollableQueue instance in > > dispatch()/process(), waiting to reacquire the lock after line 152. > > > > I think the explanation is more likely that differences in the poller > > implementations expose a different scheduling opportunity for the bug on > > Windows compared to Linux.
Speculating further: on Linux, the PollableCondition has a pipe fd plugged into the poller, and the poller can't see a second event to dispatch until the pipe is re-enabled after the first callback completes. On Windows, perhaps there are two async poke's, allowing two dispatches to occur and enabling the window of opportunity. That's just a wild guess, but I think the main clue is that there are two dispatches running on the same PollableQueue in separate threads. - Cliff ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/8072/#review13485 ----------------------------------------------------------- On Nov. 15, 2012, 3:05 a.m., Steve Huston wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/8072/ > ----------------------------------------------------------- > > (Updated Nov. 15, 2012, 3:05 a.m.) > > > Review request for qpid, Andrew Stitcher, Chug Rolke, and Cliff Jansen. > > > Description > ------- > > The assert in QPID-4424 was a check for a Thread object not set. This change > resolves that problem, but could it really be that easy? Why doesn't the > Linux code fail the same way? > > > This addresses bug QPID-4424. > https://issues.apache.org/jira/browse/QPID-4424 > > > Diffs > ----- > > > http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/src/qpid/sys/windows/Thread.cpp > 1409628 > > Diff: https://reviews.apache.org/r/8072/diff/ > > > Testing > ------- > > Original reproducing test case in QPID-4424 (run broker quiet for 15 > seconds). I set a breakpoint at the assert and stepped across it without > error. > > > Thanks, > > Steve Huston > >