Opened 5 months ago

Closed 5 months ago

#18707 closed bug (fixed)

IOM crashes (possibly BListView::MouseMoved())

Reported by: humdinger Owned by: jscipione
Priority: blocker Milestone: R1/beta5
Component: Kits/Interface Kit Version: R1/Development
Keywords: Cc: jscipione
Blocked By: Blocking:
Platform: All

Description

This is hrev57439, 64bit.

Today I experienced many crashes with Icon-O-Matic. A week or so ago I worked with IOM for long stretches of time without any crashes. As the first crash appeared to be similar to #18702, I suspected that the fix to WebKit mentioned by PulkoMandy, may not be limited to WebKit. But I got a few different crashes as well (see attached debug reports). It seems to revolve around BListView's MouseMoved().

The recent commit "BListView: Update selection on mouse down and mouse up" could be a candidate...

Attachments (4)

Change History (16)

comment:1 by waddlesplash, 5 months ago

Cc: jscipione added

Appears ScrollTo is calling MouseMoved which results in a loop. Looks like a regression from behavioral change indeed. CC jscipione.

comment:2 by waddlesplash, 5 months ago

Milestone: UnscheduledR1/beta5
Priority: normalblocker

comment:3 by jscipione, 5 months ago

This has to be caused by hrev57439 but where are the non-draggable single selection list views in Icon-O-Matic? All the ones I can see have draggable items in them, and thus shouldn't be triggering auto-scroll.

comment:4 by waddlesplash, 5 months ago

The stack traces have DragSortableListView so it's the draggable ones.

comment:5 by jackburton, 5 months ago

Can't we revert that change, while we look for a fix? This causes lots of troubles

comment:6 by jscipione, 5 months ago

I suppose we could but I am still unable to reproduce the crash on my end. I suspect that Icon-O-Matic is implementing its own version of auto-scroll and that is interfering with the one in list view.

What perplexes me is that these list views are all draggable and I should be handling that case in list view and skipping the auto-scroll.

It seems like Icon-O-Matic is always the app that these kinds of issues pop up in. Likewise for my BTextView changes I needed to create a special case for Icon-O-Matic.

Last edited 5 months ago by jscipione (previous) (diff)

comment:7 by jscipione, 5 months ago

Owner: changed from nobody to jscipione
Status: newin-progress

comment:8 by jscipione, 5 months ago

I can reproduce.

Steps to reproduce bug:

  1. Open Icon-O-Matic
  2. Create enough Empty Shape objects so that the list is scrollable.
  3. Drag a Shape

Icon-O-Matic will immediately crash.

DragSortableList::InitiateDrag() => SimpleListView::MakeDragMessage() => ShapeListView::ArchiveSelection() => crash

First crash report (6325) and third (6631) has to do with improper use of GetMouse() in Icon-O-Matic while scrolling. It specifically says "You shouldn't use this function to track the mouse" in the BeBook under BView::GetMouse(). I believe this may be a bug in Icon-O-Matic, and I'm not sure how this relates to hrev57439 at this point.

comment:9 by jscipione, 5 months ago

https://review.haiku-os.org/c/haiku/+/7215/1

My solution to solving these crashes is to update BListView to turn scrolling on for draggable multi-select views like the Shapes list, take the auto-scrolling code out of Icon-O-Matic, and scroll using BListView instead. The drawing of alternating background color, and the red drop indicator has been preserved.

GetMouse() calls have been removed from the auto-scrolling code as it can be problematic.

A more thorough fix would included exposing enough scrolling information from BListView to apps so that they could implement their own scrolling properly.

comment:10 by waddlesplash, 5 months ago

Fix merged in hrev57476.

comment:11 by jscipione, 5 months ago

Hold on, I should have said that hrev57476 fixes _some_ of the crashes in Icon-O-Matic, there are still some more fixed by https://review.haiku-os.org/c/haiku/+/7215 and WonderBrush unfortunaly still crashes in other places as well.

comment:12 by waddlesplash, 5 months ago

Resolution: fixed
Status: in-progressclosed

Other patch merged in hrev57495.

Note: See TracTickets for help on using tickets.