QtReactor bug, unable to remove WRITE handler

Bug #358145 reported by Matt
6
Affects Status Importance Assigned to Milestone
ace (Ubuntu)
Undecided
Pau Garcia Quiles

Bug Description

Binary package hint: libace-qtreactor-5.6.3

In my program's output_handler() function, if my output buffer is empty or becomes empty after the send(), I call ACE_Reactor::remove_handler() to be taken off the notification list for writing. Unfortunately, this does not work because ACE continues to repeatedly call output_handler().

The QtReactor code seems to turn the handler's associated QSocketNotifier on or off depending on what ACE_Select_Reactor_Handle_Set (wait_set_ and suspend_set_) is passed to QtReactor::bit_ops() [see patch]. The problem arises because when the user passes in CLR_MASK, QtReactor::bit_ops() is called twice in succession with wait_set_ and suspend_set_ respectively as arguments - effectively turning the QtSocketNotifier off then on again.

Patch and testcase attached.

Revision history for this message
Matt (mwlazlo) wrote :
Revision history for this message
Matt (mwlazlo) wrote :

testcase

Revision history for this message
Julien Lavergne (gilir) wrote :

Thanks for your bug report and your patch.

I add the link of the upstream bug : http://bugzilla.dre.vanderbilt.edu/show_bug.cgi?id=3642

Revision history for this message
Pau Garcia Quiles (pgquiles) wrote :

Are you still suffering from this issue with the latest version of ACE?

Changed in ace (Ubuntu):
assignee: nobody → Pau Garcia i Quiles (pgquiles)
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.