Skip to content
  • Ray Strode's avatar
    gdm-x-session: kill subprocesses on sigterm · 90a095e1
    Ray Strode authored
    <dsd> Jasper: can you explain the logic bug? just curious
    <Jasper> dsd, GCancellable is a way of cancelling an ongoing operation.
    <Jasper> dsd, so we start up a wait_async, which says "call this
             callback when the subprocess exits". And then when we get a
             SIGTERM, we fire off the cancellable, saying "no no, don't
             actually wait for to finish, let's just cancel that now"
    <Jasper> dsd, the callback is called, but wait_finish returns FALSE,
             meaning that the wait was cancelled. And then the callback says
             "oh, cool, we're done here" and clears the x_session object.
    <Jasper> dsd, I'd have to inspect closer to determine a proper fix
             should we still cancel the wait but not actually clear the
             object, so we wait synchronously in cleanup?)
    <Jasper> Depends on what else uses the cancellable.
    <dsd> ahh
    <dsd> got it
    <Jasper> dsd, the other thing that should fix it would be moving the
             g_clear_object above the "out" label here:
             https://git.gnome.org/browse/gdm/tree/daemon/gdm-x-session.c?h=gnome-3-16#n185
    <Jasper> And doing that for all of session / bus / x subprocesses.
    <Jasper> Maybe that's the cleaner fix.
    
    Based on a patch by João Paulo Rechi Vita <jprvita@endlessm.com>
    
    [endlessm/eos-shell#4921]
    
    https://bugzilla.gnome.org/show_bug.cgi?id=752388
    90a095e1