Comment #11 on issue 1760 by [email protected]: CRITICAL **: xim_open: assertion 'conn == NULL' failed
https://code.google.com/p/ibus/issues/detail?id=1760

I have done more experimentation, and I think I have a reproducible situation. The assertion happens if an XIM client sends only an XIM_DISCONNECT, without sending XIM_CLOSE. So, an XIM client that's SIGKILLed will probably not trigger an assertion in the server by itself, only a bad XIM client. However after that point, the assertion will be hit not by the bad client, but by the next client that connects to the XIM server, even if it's a good client. So this is a situation where a bad XIM client ends up corrupting the server so that it cannot be used even by good clients:

client #1 (bad client):

XIM_CONNECT
XIM_OPEN
XIM_DISCONNECT

client #2 (good client):

XIM_CONNECT
XIM_OPEN
the server will now hit this assertion.

My client, which originally triggered this bug is actually a pretty big library that takes a long time to build, in two steps. If you'd like to try it, I prepared two tarballs, but it should be possible to take any client, and modify it to simply skip sending the XIM_CLOSE message, and send XIM_DISCONNECT only, and this should be reproducible.

Like I said, it's a pretty big library, it's not completely done, but since you mentioned before that you're using Fedora, it might be a bit easier for you to build it:

Step 1:
http: //www.courier-mta.org/ibus/libcxx-0.8.tar.bz2

Build this using rpmbuild:

rpmbuild -ba libcxx-0.8.tar.bz2

This should build several binary RPMs. Install the libcxx and libcxx-devel RPMs.

Step 2:

http: //www.courier-mta.org/ibus/libcxxw-0.1.tar.bz2

Run only ./configure and make, then from the build directory:

./testrichtexteditor

This will open a window, close it without doing anything. This will end up connecting and sending the XIM_CONNECT/XIM_OPEN/XIM_DISCONNECT sequence. After this, the next XIM client will trigger this assertion in the server.



Ad

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
--
You received this message because you are subscribed to the Google
Groups "ibus-devel" group.
iBus project web page: http://code.google.com/p/ibus/
iBus dev group: http://groups.google.com/group/ibus-devel?hl=en
--- You received this message because you are subscribed to the Google Groups "ibus-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

回复