source ID not found

Patrick Ohly patrick.ohly at intel.com
Tue Feb 4 08:29:34 UTC 2014


On Tue, 2014-02-04 at 11:22 +1300, Jane Atkinson wrote:
> Program received signal SIGTRAP, Trace/breakpoint trap.
> 0xb7b7b15a in g_logv () from /lib/i386-linux-gnu/libglib-2.0.so.0
> (gdb) where
> #0  0xb7b7b15a in g_logv () from /lib/i386-linux-gnu/libglib-2.0.so.0
> #1  0xb7b7b273 in g_log () from /lib/i386-linux-gnu/libglib-2.0.so.0
> #2  0xb7b72cbc in g_source_remove () from
> /lib/i386-linux-gnu/libglib-2.0.so.0
> #3  0xb7de2d99 in SyncEvo::ForkExecParent::~ForkExecParent
> (this=0x8213518, __in_chrg=<optimized out>) at
> /data/runtests/work/sources/syncevolution/src/syncevo/ForkExec.cpp:125

Thanks, that's it.

I think I know why the source tag is invalid in that destructor. Here's
a patch which should fix it:

diff --git a/src/syncevo/ForkExec.cpp b/src/syncevo/ForkExec.cpp
index 31009b8..aabffed 100644
--- a/src/syncevo/ForkExec.cpp
+++ b/src/syncevo/ForkExec.cpp
@@ -333,11 +333,14 @@ gboolean ForkExecParent::outputReady(GIOChannel *source,
             // Will remove event source from main loop.
             cont = false;
 
-            // Free channel.
+            // Free channel and forget source tag (source will be free
+            // when returning false).
             if (source == me->m_out) {
                 me->m_out = NULL;
+                me->m_outID = 0;
             } else {
                 me->m_err = NULL;
+                me->m_errID = 0;
             }
             g_io_channel_unref(source);

Can compile from source and try that out?

-- 
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.





More information about the SyncEvolution mailing list