Thanks for your answer. Unfortunately, I'm running out of options:
currently I'm using threads, but there is a nasty bug that makes my
program crash sometimes. It is very subtle, because it hapens usually
after being running for two-three days. It is a double free. I tried
with Valgrind, but when I use it, the error doesn't trigger, which makes
me suspect it is a race condition between both threads (valgrind ensures
that only one thread runs each time). I checked all the code, and
isolated everything as much as I could, and adding as many locks as I
could imagine, trying to remove that bug, but its imposible, so I
decided to separate the code in two independent processes to be able to
use valgrind and finally find what is happening. But as you say, it
seems I'll have to do something else...

On 01/09/15 15:12, Chris Vine wrote:
> On Tue, 1 Sep 2015 13:54:34 +0200
> rastersoft <ras...@rastersoft.com> wrote:
>> Hi all:
>>
>> I'm working on a project which, for several reasons, will use the
>> Posix fork() call. The question is: if I have an active GTK main loop
>> in the program before calling fork(), is there something I have to do
>> after calling it in the child process? I know that I must NOT use Gtk
>> calls in the child, but should I quit the main loop in the child?
>> Should I quit before the Gtk main loop, create the child, and call it
>> again? What can I do to don't loose registered callbacks and so on?
> Because of gio, which uses background threads for some of its stuff
> (in particular for its async i/o operations) all GTK+ programs are in
> effect multi-threaded nowadays.  This makes calling fork() problematic,
> because as you probably know POSIX only permits async-signal-safe
> functions to be called after a fork() and before an exec() in a
> multi-threaded program.  If you want to do anything other than a fork()
> and an exec(), then start a thread not a new process.  This leaves your
> question redundant.
>
> For asynchronous tasks you might want to look at GTask (available from
> glib-2.36).  For an encapsulation of the fork()/exec() approach, see
> also GSubProcess, available from glib-2.40.
>
> Chris
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>

-- 
Nos leemos
                         RASTER    (Linux user #228804)
ras...@rastersoft.com              http://www.rastersoft.com

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to