> On Nov 16, 2020, at 1:46 PM, Allin Cottrell via gtk-osx-users-list
> <gtk-osx-users-list@gnome.org> wrote:
>
> Back in 2106 there was a thread concerning a crash on macOS when (a) a GTK
> window is maximized, then (b) the user tries to close the maximized window
> via the quartz control button ("x"). See
> https://mail.gnome.org/archives/gtk-osx-users-list/2016-February/msg00005.html
> and following.
>
> I thought we were done with that; there seemed to be fix in hand and no more
> was heard of the problem. But now I'm seeing the same thing again -- this is
> with GTK 2.24.32 on macOS 10.15.7. The crash report from the OS looks just
> like before, with the coup de grace in this sequence:
>
> Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
> 0 libgdk-quartz-2.0.0.dylib 0x000000010bb690a5 -[GdkQuartzView
> updateTrackingRect] + 37
> 1 libgdk-quartz-2.0.0.dylib 0x000000010bb69249 -[GdkQuartzView setFrame:] +
> 105
> 2 com.apple.AppKit 0x00007fff2d5d889b -[NSThemeFrame setStyleMask:]
> + 1008
>
> Any ideas on what might have changed to allow this bug to re-emerge?
>
> Just for reference, here's the code for the function at issue, in
> GdkQuartzView.c. In 2016 the problem was handled by checking for "!impl" as
> well as "!impl->toplevel" before doing anything substantive. Now apparently
> that is not sufficient.
>
> -(void)updateTrackingRect
> {
> GdkWindowObject *private = GDK_WINDOW_OBJECT (gdk_window);
> GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
> NSRect rect;
>
> if (!impl || !impl->toplevel)
> return;
>
> if (trackingRect)
> {
> [self removeTrackingRect: trackingRect];
> trackingRect = 0;
> }
>
> if (!impl->toplevel)
> return;
>
> /* Note, if we want to set assumeInside we can use:
> * NSPointInRect ([[self window] convertScreenToBase:[NSEvent
> mouseLocation]], rect)
> */
>
> rect = [self bounds];
> trackingRect = [self addTrackingRect: rect
> owner: self
> userData: nil
> assumeInside: NO];
> }
It's probably a use-after-free where private->impl has been freed but not
NULLed. Address sanitizer is the fastest way to track down problems like that.
I haven't been working much with Gtk2 in the last couple of years but The GIMP
still does. Unfortunately I don't think any of them subscribe here so I suggest
you open an issue at https://gitlab.gnome.org/GNOME/gtk.
Regards,
John Ralls
_______________________________________________
gtk-osx-users-list mailing list
gtk-osx-users-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-osx-users-list