[Bug 1926298] Re: Segfault added in the recent changes

Dan Bungert 1926298 at bugs.launchpad.net
Tue Apr 27 16:56:14 UTC 2021


Root cause:                                                                                                              
The goto out for cleanup can skip a variable initialization, so in some cases we                                         
crash on if(pathdirs) g_strfreev(pathdirs); because pathdirs is declared too                                             
late and, in that code flow, never initialized.                                                                          
                                                                                                                         
We could thus also fix this by ensuring that pathdirs is properly initialized                                            
at the beginning of the function, but removing the reimplementation of                                                   
g_find_program_in_path is the superior solution.                                                                         

Attached is my proposed fix, however I don't think we should upload yet
since there appear to be some parallel work going on in
https://bugs.launchpad.net/ubuntu/+source/update-notifier/+bug/1883315

** Patch added: "update-notifier-1-3.192.41.debdiff"
   https://bugs.launchpad.net/ubuntu/+source/update-notifier/+bug/1926298/+attachment/5492829/+files/update-notifier-1-3.192.41.debdiff

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to update-notifier in Ubuntu.
https://bugs.launchpad.net/bugs/1926298

Title:
  Segfault added in the recent changes

Status in update-notifier package in Ubuntu:
  In Progress

Bug description:
  The issue is new using https://code.launchpad.net/~dbungert/update-
  notifier/+git/update-notifier/+merge/397367 , the previous revision
  didn't have the issue

  * Create a file 'bug'

  'Name: bug
  Priority: Low
  Command: "/bin/true"
  DisplayIf: /bin/true
  Description: update notifier bug'

  and copy it to /var/lib/update-notifier/user.d

  ->  update-notifier segfaults

  (gdb) bt
  #0  0x00007ffff718c769 in __GI___libc_free (mem=0x5550000aa7f9) at malloc.c:3288
  #1  0x00007ffff7365215 in g_strfreev (str_array=<optimized out>) at ../../../glib/gstrfuncs.c:2553
  #2  g_strfreev (str_array=0x5555555d9e00) at ../../../glib/gstrfuncs.c:2546
  #3  0x000055555555dd2d in hook_command_exists (cmd=0x555555702600 "\"/usr/bin/eog\"") at hooks.c:137
  #4  0x000055555555fd6e in is_hook_relevant (hook_file=0x555555829e7b "apt-file.update-notifier")
      at hooks.c:717
  #5  0x000055555555ffb1 in check_update_hooks (ta=0x5555556c9a20) at hooks.c:781
  #6  0x0000555555560715 in hook_tray_icon_init (ta=0x5555556c9a20) at hooks.c:969
  #7  0x000055555555cd77 in tray_icons_init (un=0x55555562c3e0, 

  
  It seems likely to be the error on top of the weekly report for hirsute but that's missing a stacktrace

  
  One comment in addition on the change there, was the env split + iterate over pathdirs basically a re-implementation of https://developer.gnome.org/glib/stable/glib-Miscellaneous-Utility-Functions.html#g-find-program-in-path ? If there is particular reason to do that I would recommend just using the glib function instead (which might also fix the issue as a side effect, I didn't check)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/update-notifier/+bug/1926298/+subscriptions



More information about the foundations-bugs mailing list