Thread: Re: [GM-help] graphicsmagick signal handler problem
Swiss army knife of image processing
Brought to you by:
bfriesen
From: yzh杨振宏 <zhyang@Ctrip.com> - 2018-03-06 09:49:03
|
Hi, I write to confirm whether GraphicsMagick can officially disable establishing signal handlers for library users in InitializeMagick. ImageMagick already disable it in MagickWandGenesis. See https://github.com/ImageMagick/ImageMagick/blob/93b707b4a5882ab3d7f8904984684846fe178a97/MagickWand/magick-wand.c -----邮件原件----- 发件人: yzh杨振宏 发送时间: 2018年3月5日 10:01 收件人: Requests for help with GraphicsMagick <gra...@li...> 主题: 答复: [GM-help] graphicsmagick signal handler problem Yes, it can work. Since Go set up its signal handlers and flags (contain SA_ONSTACK) before InitializeMagick, so I try to set back both signal handlers and flags when signal handlers != default in InitializeMagickSignalHandlers (GM default set handlers back but flags is ignored), than program will not crash. On the other hand, I note that ImageMagick already use a variable establish_signal_handlers to enable/disable own signal handlers and default is set to false for proper reason, i.e., MagickCoreGenesis(const char *path, const MagickBooleanType establish_signal_handlers) WandExport void MagickWandGenesis(void) { if (IsMagickCoreInstantiated() == MagickFalse) MagickCoreGenesis((char *) NULL,MagickFalse); } So, I believe GM can take the same action for library/application user -----邮件原件----- 发件人: Bob Friesenhahn [mailto:bfr...@si...] 发送时间: 2018年3月1日 22:11 收件人: Requests for help with GraphicsMagick <gra...@li...> 主题: Re: [GM-help] graphicsmagick signal handler problem On Thu, 1 Mar 2018, yzh杨振宏 wrote: > hi, > > I'm a GM API user. I use GM in Go lang. Since Golang require that > > "If the non-Go code installs any signal handlers, it must use the > SA_ONSTACK flag with sigaction. Failing to do so is likely to cause > the program to crash if the signal is received." > (https://golang.org/pkg/os/signal/) > > So could GM let user determine whether or not set signal handlers (i.e., use a bool variable) in InitializeMagick? Would it work if GM was to specify SA_ONSTACK when the feature is available? What harm might result from making this the default? Otherwise, the using library/application will need to (re)-establish its own signal handlers with sigaction after invoking InitializeMagick(). Bob -- Bob Friesenhahn bfr...@si..., http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ |
From: yzh杨振宏 <zhyang@Ctrip.com> - 2018-03-09 02:31:58
|
Handling SA_ONSTACK smarter is sufficient to solve our problem. I will help you test when the feature is committed to Mercurial Repository. Besides, I wonder why GraphicsMagick not maintain a repo on github? It's a bit difficult to contribute to the project and ask for help now. -----邮件原件----- 发件人: Bob Friesenhahn [mailto:bfr...@si...] 发送时间: 2018年3月9日 5:33 收件人: Requests for help with GraphicsMagick <gra...@li...> 主题: Re: [GM-help] graphicsmagick signal handler problem On Tue, 6 Mar 2018, yzh杨振宏 wrote: > Hi, > I write to confirm whether GraphicsMagick can officially disable > establishing signal handlers for library users in InitializeMagick. > ImageMagick already disable it in MagickWandGenesis. See > https://github.com/ImageMagick/ImageMagick/blob/93b707b4a5882ab3d7f890 > 4984684846fe178a97/MagickWand/magick-wand.c I can make the existing handling a bit smarter about SA_ONSTACK but making the change the way you suggest would be an API and ABI change so it might not be easily done. Perhaps a global variable could be used to avoid breaking the ABI but then it would add an unpleasant global variable to the ABI. Another way to do it would be to add some functions which could be called before InitializeMagick() in order to influence options used. Bob -- Bob Friesenhahn bfr...@si..., http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ |
From: Bob F. <bfr...@si...> - 2018-03-13 13:35:51
|
On Fri, 9 Mar 2018, yzh杨振宏 wrote: > Handling SA_ONSTACK smarter is sufficient to solve our problem. I will help you test when the feature is committed to Mercurial Repository. > Besides, I wonder why GraphicsMagick not maintain a repo on github? It's a bit difficult to contribute to the project and ask for help now. I have commited changeset 15457:35f6888c781f to use SA_ONSTACK when it is available. It will appear in today's source code snapshot. Regarding github, GraphicsMagick is developed/maintained by unpaid volunteers with unrelated full time jobs and so there is only so much time available to fix bugs and investigate alternative hosting. It is definitely a problem that the GraphicsMagick Mercurial repository at SourceForge has not been working properly for a month already. I hoped that SourceForge would get its severe issues resolved by now but there is no apparent progress. The SourceForge problem reporting system is full of unread requests to remove projects, and about inability to clone project repositories. Bob |
From: Bob F. <bfr...@si...> - 2018-03-08 21:33:05
|
On Tue, 6 Mar 2018, yzh杨振宏 wrote: > Hi, > I write to confirm whether GraphicsMagick can officially disable establishing signal handlers for library users in InitializeMagick. ImageMagick already disable it in MagickWandGenesis. See https://github.com/ImageMagick/ImageMagick/blob/93b707b4a5882ab3d7f8904984684846fe178a97/MagickWand/magick-wand.c I can make the existing handling a bit smarter about SA_ONSTACK but making the change the way you suggest would be an API and ABI change so it might not be easily done. Perhaps a global variable could be used to avoid breaking the ABI but then it would add an unpleasant global variable to the ABI. Another way to do it would be to add some functions which could be called before InitializeMagick() in order to influence options used. Bob -- Bob Friesenhahn bfr...@si..., http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ |