#1557 Greedy SIGCHLD handler

Bug
closed-fixed
Neil Hodgson
4
2013-12-12
2013-11-23
felix
No

The SIGCHLD handler in the GTK port collects the exit status of all child processes, regardless of where they were launched. This for example prevents Lua scripts from knowing the exit status of children launched from Lua: the handler kicks in before Lua has a chance to call wait().

The process-launching facilities of the GTK port should be probably re-written to use g_spawn_async() and g_child_watch_add().

Discussion

  • Neil Hodgson
    Neil Hodgson
    2013-11-23

    Sounds reasonable but this is a low priority for me so depends on someone willing to contribute an implementation.

     
  • Neil Hodgson
    Neil Hodgson
    2013-11-23

    • labels: --> scite, gtk
    • assigned_to: Neil Hodgson
    • Priority: 5 --> 4
     
  • Neil Hodgson
    Neil Hodgson
    2013-11-23

    • status: open --> open-accepted
     
  • felix
    felix
    2013-11-25

    Attaching a minimal patch.

     
    Last edit: felix 2013-11-26
    Attachments
  • Neil Hodgson
    Neil Hodgson
    2013-11-26

    Since g_spawn_async_with_pipes creates the pipe, shouldn't the call to pipe and the pipefds variable be removed?

     
    • felix
      felix
      2013-11-26

      It should. I noticed that at the very last moment, and amended the patch, but it seems that I uploaded the old version.

       
  • Neil Hodgson
    Neil Hodgson
    2013-11-26

    Committed as [96dcfd].

     

    Related

    Commit: [96dcfd]

  • Neil Hodgson
    Neil Hodgson
    2013-11-26

    • status: open-accepted --> open-fixed
     
  • Neil Hodgson
    Neil Hodgson
    2013-12-12

    • status: open-fixed --> closed-fixed