On 2022-02-06 22:50:07 +0400 Fred Kiefer <fredkiefer@gmx.de> wrote:
> Your change looks great to me, as always. Let's just hope it does not
> break
> anything for the other two issues that caused the different changes
> on that
> code.
That one issue in December was due to deallocation of NSPopUpButtonCell
causing to call -[synchronizeTitleAndSelectedItem] followed with
updating
of the _menuItem, its _menu and all dependants (validators) where
the segfault occurs because one of the validators has been deallocated
already.
#0 0x00007ffff6ee9415 in objc_msg_lookup () from
/usr/lib/x86_64-linux-gnu/libobjc.so.4
#1 0x00007ffff7845af0 in -[NSApplication targetForAction:to:from:]
(self=0x5555559683a0, _cmd=0x7ffff7c72330 <_OBJC_SELECTOR_TABLE+2384>,
theAction=0x555555ad8570, theTarget=0x555555e464b0,
sender=0x555555d1feb0) at NSApplication.m:2294
#2 0x00007ffff7949ca8 in -[NSMenu _autoenableItem:]
(self=0x555555d1fa40, _cmd=0x7ffff7c723f0 <_OBJC_SELECTOR_TABLE+2576>,
item=0x555555d1feb0) at NSMenu.m:1184
#3 0x00007ffff794a078 in -[NSMenu update] (self=0x555555d1fa40,
_cmd=0x7ffff7c721a0 <_OBJC_SELECTOR_TABLE+1984>) at NSMenu.m:1260
#4 0x00007ffff7948f56 in -[NSMenu itemChanged:] (self=0x555555d1fa40,
_cmd=0x7ffff7c79650 <_OBJC_SELECTOR_TABLE+496>,
anObject=0x555555d1fdd0) at NSMenu.m:878
#5 0x00007ffff7957bdd in -[NSMenuItem setImage:]
(self=0x555555d1fdd0, _cmd=0x7ffff7c98cf0 <_OBJC_SELECTOR_TABLE+1168>,
image=0x0)
at NSMenuItem.m:375
#6 0x00007ffff797c589 in -[NSPopUpButtonCell setMenuItem:]
(self=0x555555d1fc60, _cmd=0x7ffff7c98da0 <_OBJC_SELECTOR_TABLE+1344>,
item=0x0)
at NSPopUpButtonCell.m:652
#7 0x00007ffff797cf77 in -[NSPopUpButtonCell
synchronizeTitleAndSelectedItem] (self=0x555555d1fc60,
_cmd=0x7ffff7c98ac0 <_OBJC_SELECTOR_TABLE+608>) at
NSPopUpButtonCell.m:854
#8 0x00007ffff797b631 in -[NSPopUpButtonCell setMenu:]
(self=0x555555d1fc60, _cmd=0x7ffff7c98940 <_OBJC_SELECTOR_TABLE+224>,
menu=0x0)
at NSPopUpButtonCell.m:218
#9 0x00007ffff797b284 in -[NSPopUpButtonCell dealloc]
(self=0x555555d1fc60, _cmd=0x7ffff7534970 <_OBJC_SELECTOR_TABLE+48>)
at NSPopUpButtonCell.m:153
May be doing that is excessive in the context of deallocation?
The attached patch changes the -[dealloc] to do the code chunk
equivalent to -[setMenu:nil]
avoiding that -[NSPopUpButtonCell synchronizeTitleAndSelectedItem] and
following.
--
SG
<gtam_segfault_on_quit_bug.patch>