Bug in MessageListener::postMessage


#1

Got a few issue with this method : MessageListener::postMessage because it’s declared throw().
Currently, the implementation on Linux call “write” on a socket pair, which is a thread cancellation point.
However, when a thread exits or is cancelled, it virtually “throw” a special kind of exception to force stack unwind.

This small “throw()” crash the program, since gcc doesn’t generate the unwind information for such method, and when called the default “terminate” is called.
Removing this declaration on both the definition and declaration solve the unwinding instantly and thread exits gracefully.


#2

Good point, thanks!