Am Sonntag, den 09.08.2015, 19:57 +0200 schrieb Richard Weinberger:
> On Wed, Jul 15, 2015 at 3:58 PM, Thomas Meyer <tho...@m3y3r.de> 
> wrote:
> > Am Mittwoch, den 15.07.2015, 12:12 +0200 schrieb Richard 
> > Weinberger:
> > > On Mon, Jul 13, 2015 at 5:12 PM, Thomas Meyer <tho...@m3y3r.de>
> > > wrote:
> > > > Am Montag, den 13.07.2015, 17:11 +0200 schrieb Richard 
> > > > Weinberger:
> > > > > Am 13.07.2015 um 17:08 schrieb Thomas Meyer:
> > > > > > Am Montag, den 13.07.2015, 16:41 +0200 schrieb Richard
> > > > > > Weinberger:
> > > > > > > Am 13.07.2015 um 16:24 schrieb Thomas Meyer:
> > > > > > > > > Yeah. And please add a dump_stack() to figure out 
> > > > > > > > > where
> > > > > > > > > it
> > > > > > > > > was
> > > > > > > > > called.
> > > > > > > > 
> > > > > > > > I think calling dump_stack() somehow changed the errno 
> > > > > > > > to
> > > > > > > > 25?!
> > > > > > > 
> > > > > > > > 
> > > > > > > > +extern __attribute__((regparm(0))) void 
> > > > > > > > dump_stack(void);
> > > > > > > 
> > > > > > > Hmm, maybe the regparm(0) kills your stack.
> > > > > > > Anyway, how do you trigger the issue?
> > > > > > > I tried here and don't see any zombie processes?
> > > > > > > In my setup I run UML as non-root and tap0 is owned by 
> > > > > > > root.
> > > > > > > -> UML is unable to setup eth0.
> > > > > > > But no zombies here.
> > > > > > 
> > > > > > I run UML as non-root user, tun is:
> > > > > > 
> > > > > > $ ll /dev/net
> > > > > > insgesamt 0
> > > > > > crw-rw----. 1 root zml-net 10, 200 13. Jul 14:49 tun
> > > > > > 
> > > > > > $ ll /usr/bin/uml_net
> > > > > > -rwsr-x---. 1 root uml-net 31472 19. Aug 2014 
> > > > > >  /usr/bin/uml_net
> > > > > 
> > > > > And eth0=tuntap,tap?
> > > > 
> > > > yes,
> > > > 
> > > > eth0=tuntap,,,192.168.10.2
> > > 
> > > Sorry for the late reply.
> > Hi,
> > 
> > null problemo.
> > 
> > > I'm still burred in work issues and had no time to look in detail 
> > > at
> > > this.
> > > 
> > > But in the meanwhile you can try to gather some more Infos.
> > > Remove the dump_stack() and add some printk()s.
> > > I'm interested which PIDs are returned and waited for.
> > 
> > Mhh.. I think the pid is already printed in error case:
> > 
> > [   15.930000] helper_wait : waitpid process 11673 failed, errno = 
> > 10
> > [   15.930000] * modprobe tun
> >                * ifconfig tap0 192.168.10.1 netmask 255.255.255.255 
> > up
> >                * bash -c echo 1 > /proc/sys/net/ipv4/ip_forward
> > [   20.480000] helper_wait : waitpid process 11780 failed, errno = 
> > 10
> > [   20.480000] * route add -host 192.168.10.2 dev tap0
> >                * bash -c echo 1 > 
> > /proc/sys/net/ipv4/conf/tap0/proxy_arp
> > 
> > pid 11673 and pid 11780 in above case were the two zombie 
> > processes.
> > 
> > errno 10 = ECHILD
> > 
> > which can happen for the waitpid() call, according to the man page:
> > 
> >        ECHILD (for  waitpid()  or waitid()) The process specified 
> > by pid (waitpid()) or idtype and id (waitid()) does not exist or
> >               is not a child of the calling process.  (This can 
> > happen for one's own child if the action for  SIGCHLD  is  set  to
> >               SIG_IGN.  See also the Linux Notes section about 
> > threads.)
> > 
> > I'm not able to completely figure out above meaning, so...
> > But maybe ECHILD is returned because uml_net is run with setuid bit
> > set?
> > 
> > any ideas?
> 
> The attached fix should fix the issue. Please confirm.
> 

Hi,

yes, the uml_net zombie processes are gone now!

many thanks for this patch!

with kind regards
thomas


------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to