EasyTAG 2.1.6 Handle SIGCHLD to make audacious archived skins workable
It seems that development of EasyTAG is stopped, and so I send the patch
to gentoo developers.
EasyTAG calls signal(SIGCHLD,SIG_IGN) to avoid zombies. It works fine,
but it leads to one problem.
If one calls 'Run Audio Player', the player's SIGCHLD signal handler is
inherited. So, when audacious calls system() in order to unpack its
archived skin, the archiver process ends silently (the wait() call in
system() function cannot hear that the child process has ended). The
audacious process assumes that there was an error and an unarchived skin
is used.
A possible solution is to set a handler for SIGCHLD in EasyTAG. The
handler is called when a child process ends and the latter doesn't
become a zombie.
/********
* Main *
@@ -169,7 +185,7 @@
signal(SIGFPE,Handle_Crash);
signal(SIGSEGV,Handle_Crash);
// Must handle this signal to avoid zombie of applications executed (ex: xmms)
- signal(SIGCHLD,SIG_IGN); // Fix me! : can't run nautilus 1.0.6 with "Browse Directory With"
+ setup_sigchld();
#endif
#ifdef ENABLE_NLS
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/media-sound/easytag/easytag-2.1.6-r4.ebuild,v 1.1 2010/07/29 23:16:04 ssuominen Exp $
EAPI=2
inherit eutils fdo-mime
DESCRIPTION="GTK+ utility for editing MP2, MP3, MP4, FLAC, Ogg and other media tags"
HOMEPAGE="http://easytag.sourceforge.net"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
EasyTAG 2.1.6 Handle SIGCHLD to make audacious archived skins workable
El vie, 04-03-2011 a las 15:44 +0200, Alessio Ababilov escribió:
> It seems that development of EasyTAG is stopped, and so I send the patch
> to gentoo developers.
>
> EasyTAG calls signal(SIGCHLD,SIG_IGN) to avoid zombies. It works fine,
> but it leads to one problem.
> If one calls 'Run Audio Player', the player's SIGCHLD signal handler is
> inherited. So, when audacious calls system() in order to unpack its
> archived skin, the archiver process ends silently (the wait() call in
> system() function cannot hear that the child process has ended). The
> audacious process assumes that there was an error and an unarchived skin
> is used.
> A possible solution is to set a handler for SIGCHLD in EasyTAG. The
> handler is called when a child process ends and the latter doesn't
> become a zombie.
>
> Alessio Ababilov
What about opening a bug report at bugs.gentoo.org?