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

ximxtransport.C has three instances of

status->wait_for([interval], [lambda]);

(XIM_CONNECT, XIM_OPEN, XIM_GET_IM_VALUES

Replacing each one with

status->wait([lambda]);

should do the trick. Something like the following (although, I'll bet, most XIM clients don't have a timeout, so after causing an assert with my client, first, starting another client, like xterm, could hang):


diff --git a/ximxtransport.C b/ximxtransport.C
index bbdb5ec..eadf6e7 100644
--- a/ximxtransport.C
+++ b/ximxtransport.C
@@ -161,7 +161,7 @@ bool ximxtransportObj::implObj::initialize()
        s->conn->connectionThread->flush();
        // Wait for either the connection to drop, or the response

-       status->wait_for(std::chrono::seconds(10),
+       status->wait(
                         []
                         (ximserver::base::metadata_info &m)
                         {
@@ -215,7 +215,7 @@ bool ximxtransportObj::implObj::initialize()
        xim_open_send(locale::base::environment()->name());
        s->conn->connectionThread->flush();

-       status->wait_for(std::chrono::seconds(10),
+       status->wait(
                         []
                         (ximserver::base::metadata_info &m)
                         {
@@ -246,7 +246,7 @@ bool ximxtransportObj::implObj::initialize()
                s->conn->connectionThread->flush();


-               status->wait_for(std::chrono::seconds(60),
+               status->wait(
                                 []
                                 (ximserver::base::metadata_info &m)
                                 {
@@ -286,7 +286,7 @@ bool ximxtransportObj::implObj::initialize()
                s->conn->connectionThread->flush();
        }

-       status->wait_for(std::chrono::seconds(60),
+       status->wait(
                         []
                         (ximserver::base::metadata_info &m)
                         {


--
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.

回复