Re: forking heap question



Ralph Walden wrote:
> 
> Don't forget, that there is actually a shared memory component.
> That is, the widgets involve resources on the X server that are
> common to the parent and child...  Manipulating them from
> two different processes is a bad idea IMHO.

Most definitely a bad idea. But how can you avoid manipulating them by
accident from the process which is not supposed to, as with a memory
allocation error. I've already hunted down two of them in xftree, so
there might be a third, and the "x-io error" makes the hunting much more
difficult.

Edscott

> 
> Ralph Walden
> 
> Edscott Wilson García wrote:
> >
> > Paul Davis wrote:
> > >
> > > >Neither do I think it's possible. Yet, it is so. Maybe a failed malloc()
> > >
> > > no its not. virtual address spaces make it so. children have no access
> > > to their parent's address space. global variables make no difference.
> > >
> > > >or free() makes the child access a gtk widget it's not supposed to, via
> > > >some globally defined variable. This is the offending code executed by
> > > >the child (the complete file is xtree_cpy.c from program xftree of the
> > > >xfce desktop environment with CVS at sourceforge.net):
> > > >
> > > >The recursive call makes the parent fail quickly. The non recursive call
> > > >also makes it
> > > >fail, as long as the child executes it the subroutined enough number of
> > > >times.
> > >
> > > have you checked that the recursion bottoms out? if the child uses all
> > > of available RAM (physical and swap), the parent will make
> > > a malloc call that returns NULL.
> >
> > Yes. It does not bottom out. And the error occurs also in the
> > non-recursive case, when the
> > subroutine is performed within a simple loop. I have also noticed that
> > with gtk either the parent or the child can take over the gtk widgets,
> > depending on who accesses them first. So I believe some error (probably
> > memory allocation stuff) is fooling gtk into thinking that the child has
> > taken over the widgets, so when the parent tries to access them, it gets
> > the "x io error", of course. This explanation would leave child and
> > parent heaps totally independent, as should be. Maybe there is a way to
> > tell gtk at the fork point whether child or parent will keep the widgets
> > instead of leaving it up to gtk to decide?
> >
> > --
> >
> > saludos,
> >
> > Edscott
> > _______________________________________________
> > gtk-list mailing list
> > gtk-list gnome org
> > http://mail.gnome.org/mailman/listinfo/gtk-list
> 
> --
> 
> Ralph E. Walden
> Tripos, Inc.
> rwalden tripos com
> _______________________________________________
> gtk-list mailing list
> gtk-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-list

-- 

saludos,

Edscott



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]