Crash on moving accounts into groups #354

Closed
hsoft opened this Issue Jun 22, 2013 · 6 comments

Projects

None yet

1 participant

@hsoft
Owner
hsoft commented Jun 22, 2013

I've found a very reproducible crash when moving Accounts into Account Groups. There seem to be two ways to trigger the crash:

  • The first is to move (drag & drop) an Account into an empty Account Group.
  • The second is to move (drag & drop) an Account into a folded Account Group.

(By folded I mean clicking the triangle to the left of the Account Group name so as to hide the list of accounts it holds).

Seems to occur in all four account types (assets, liabilities, income, expenses) though haven't exhaustively tested every combination.

  • Platform: Intel-based Mac OS X 10.8.2
  • Version: moneyGuru 2.6.2

I've been seeing this (or a very similar, involving dragging & dropping of groups) crash bug for a few versions, but only just now discovered exactly how to reproduce it each time. I'd say at least since 2.6.0, maybe even as far back as 2.5.2 (moving accounts around isn't a very common task for me, as you can see!)

@hsoft
Owner
hsoft commented Jun 22, 2013

I tried to reproduce the bug, and it it's as easy as you make it sound.

Does this crash also happen on other documents. For example, can you easily reproduce the bug on the Example document?

@hsoft
Owner
hsoft commented Jun 22, 2013

Yep, I opened up the Example Document, created a new Account Group (left the default name) and then dragged the first account into it. Immediate crash.

Also:

I tried to reproduce the bug, and it it's as easy as you make it sound.

(did you mean not as easy?)

@hsoft
Owner
hsoft commented Jun 22, 2013

Ok it's not quite as repeatable as I thought.

Seems to always happen on my big account files, but it doesn't happen every single time with a New or Example document.
I'd guess about half the time I open/create one of these simple documents, moneyGuru it will let me move accounts around indefinitely, but closing & reopening/creating the document, then repeating the test, may then cause the crash.

I don't know if this is helpful but this is the thread that crashed:

@@@
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff90cf5250 objc_msgSend + 16
1 com.apple.CoreFoundation 0x00007fff9098140d -[__NSDictionaryM objectForKey:] + 77
2 com.hardcoded-software.moneyguru 0x00000001000092a2 -[HSOutline property:valueAtPath:] + 66
3 com.hardcoded-software.moneyguru 0x0000000100009676 -[HSOutline intProperty:valueAtPath:] + 70
4 com.hardcoded-software.moneyguru 0x00000001000097b1 -[HSOutline outlineView:numberOfChildrenOfItem:] + 65
5 com.hardcoded-software.moneyguru 0x00000001000098ad -[HSOutline outlineView:isItemExpandable:] + 77
6 com.apple.AppKit 0x00007fff98912b1b -[NSOutlineView _dataSourceIsItemExpandable:] + 139
7 com.apple.AppKit 0x00007fff9892033a -[NSOutlineView isExpandable:] + 75
8 com.apple.AppKit 0x00007fff98bf5f8d -[NSOutlineView _shouldAutoExpandItem:] + 76
9 com.apple.AppKit 0x00007fff98bf6304 -[NSOutlineView _autoExpandItem:] + 45
10 com.apple.AppKit 0x00007fff98bf5908 -[NSOutlineView performDragOperation:] + 441
11 com.apple.AppKit 0x00007fff98afb9bf NSCoreDragReceiveMessageProc + 1651
12 com.apple.HIServices 0x00007fff953cc46a DoMultipartDropMessage + 301
13 com.apple.HIServices 0x00007fff953cc135 DoDropMessage + 49
14 com.apple.HIServices 0x00007fff953cc0d7 SendDropMessage + 41
15 com.apple.HIServices 0x00007fff953cf7c8 DragInApplication + 654
16 com.apple.HIServices 0x00007fff953cec69 CoreDragStartDragging + 519
17 com.apple.AppKit 0x00007fff98afc190 -[NSCoreDragManager _dragUntilMouseUp:accepted:] + 881
18 com.apple.AppKit 0x00007fff98afd4ba -[NSCoreDragManager dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:] + 1455
19 com.apple.AppKit 0x00007fff98dad040 -[NSWindow(NSDrag) dragImage:at:offset:event:pasteboard:source:slideBack:] + 133
20 com.apple.AppKit 0x00007fff98bf4950 -[NSOutlineView dragImage:at:offset:event:pasteboard:source:slideBack:] + 227
21 com.apple.AppKit 0x00007fff98cad1e0 -[NSTableView _doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:startRow:] + 570
22 com.apple.AppKit 0x00007fff98cae11d -[NSTableView _performClassicDragOfIndexes:hitRow:event:] + 358
23 com.apple.AppKit 0x00007fff98cae391 -[NSTableView _performDragFromMouseDown:] + 509
24 com.apple.AppKit 0x00007fff98ca04b2 -[NSTableView mouseDown:] + 707
25 com.apple.AppKit 0x00007fff98bf07c9 -[NSOutlineView mouseDown:] + 678
26 com.apple.AppKit 0x00007fff9888f60e -[NSWindow sendEvent:] + 6853
27 com.apple.AppKit 0x00007fff9888b744 -[NSApplication sendEvent:] + 5761
28 com.apple.AppKit 0x00007fff987a12fa -[NSApplication run] + 636
29 com.hardcoded-software.moneyguru 0x000000010000b355 main + 901
30 com.hardcoded-software.moneyguru 0x0000000100001574 start + 52
@@@

@hsoft
Owner
hsoft commented Jun 22, 2013

Not sure if this is related, but in further attempts to find out if any specific actions/prevent the crashes, I'm occasionally seeing this behaviour:

After successfully moving an account into a group without a crash, sometimes I lose the ability to drag & drop accounts with the mouse entirely from that point on (requires restart of the application to fix; closing/reopening documents, tabs, windows doesn't fix it).

At the same time I've seen these messages appear in the system log:

@@@
1/03/13 4:25:49.853 PM moneyGuru[5928]: -[NSArrayM length]: unrecognized selector sent to instance 0x10a660650
1/03/13 4:25:49.854 PM moneyGuru[5928]: -[__NSArrayM length]: unrecognized selector sent to instance 0x10a660650
1/03/13 4:25:49.856 PM moneyGuru[5928]: (
0 CoreFoundation 0x00007fff87dbc0a6 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff862733f0 objc_exception_throw + 43
2 CoreFoundation 0x00007fff87e526ea -[NSObject(NSObject) doesNotRecognizeSelector:] + 186
3 CoreFoundation 0x00007fff87daa5ce __forwarding
+ 414
4 CoreFoundation 0x00007fff87daa3b8 _CF_forwarding_prep_0 + 232
5 moneyGuru 0x000000010000339f +[Utils indexPath2Array:] + 111
6 moneyGuru 0x0000000100009317 -[HSOutline property:valueAtPath:] + 183
7 moneyGuru 0x0000000100009676 -[HSOutline intProperty:valueAtPath:] + 70
8 moneyGuru 0x00000001000097b1 -[HSOutline outlineView:numberOfChildrenOfItem:] + 65
9 moneyGuru 0x00000001000098ad -[HSOutline outlineView:isItemExpandable:] + 77
10 AppKit 0x00007fff8a70ab1b -[NSOutlineView _dataSourceIsItemExpandable:] + 139
11 AppKit 0x00007fff8a71833a -[NSOutlineView isExpandable:] + 75
12 AppKit 0x00007fff8a9edf8d -[NSOutlineView _shouldAutoExpandItem:] + 76
13 AppKit 0x00007fff8a9ee304 -[NSOutlineView _autoExpandItem:] + 45
14 AppKit 0x00007fff8a9ed908 -[NSOutlineView performDragOperation:] + 441
15 AppKit 0x00007fff8a8f39bf NSCoreDragReceiveMessageProc + 1651
16 HIServices 0x00007fff898d946a DoMultipartDropMessage + 301
17 HIServices 0x00007fff898d9135 DoDropMessage + 49
18 HIServices 0x00007fff898d90d7 SendDropMessage + 41
19 HIServices 0x00007fff898dc7c8 DragInApplication + 654
20 HIServices 0x00007fff898dbc69 CoreDragStartDragging + 519
21 AppKit 0x00007fff8a8f4190 -[NSCoreDragManager _dragUntilMouseUp:accepted:] + 881
22 AppKit 0x00007fff8a8f54ba -[NSCoreDragManager dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:] + 1455
23 AppKit 0x00007fff8aba5040 -[NSWindow(NSDrag) dragImage:at:offset:event:pasteboard:source:slideBack:] + 133
24 AppKit 0x00007fff8a9ec950 -[NSOutlineView dragImage:at:offset:event:pasteboard:source:slideBack:] + 227
25 AppKit 0x00007fff8aaa51e0 -[NSTableView _doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:startRow:] + 570
26 AppKit 0x00007fff8aaa611d -[NSTableView _performClassicDragOfIndexes:hitRow:event:] + 358
27 AppKit 0x00007fff8aaa6391 -[NSTableView _performDragFromMouseDown:] + 509
28 AppKit 0x00007fff8aa984b2 -[NSTableView mouseDown:] + 707
29 AppKit 0x00007fff8a9e87c9 -[NSOutlineView mouseDown:] + 678
30 AppKit 0x00007fff8a68760e -[NSWindow sendEvent:] + 6853
31 AppKit 0x00007fff8a683744 -[NSApplication sendEvent:] + 5761
32 AppKit 0x00007fff8a5992fa -[NSApplication run] + 636
33 moneyGuru 0x000000010000b355 main + 901
34 moneyGuru 0x0000000100001574 start + 52
35 ??? 0x0000000000000002 0x0 + 2
)
@@@

Might be entirely unrelated, but given both the crash and this no-more-dragging both seem to arise from the same trigger, I thought it may be relevant...

@hsoft
Owner
hsoft commented Jun 22, 2013

Yes, I could reproduce the crash, but it doesn't happen all the time. This one might be a bit hard to fix.

@hsoft
Owner
hsoft commented Sep 7, 2013

Well, the situation hasn't changed much since the bug was filed. I still can reproduce it, but not in a reliable manner. Sometimes, it crashes, sometimes, it logs an error in the console and I lose the ability to drag&drop.

The only thing I can do is to go over the D&D code and make sure that there's isn't any code smell...

@hsoft hsoft added a commit that closed this issue Sep 7, 2013
@hsoft Fixed HSOutline crashes on drag & drop
Fixes #354.
568a2e9
@hsoft hsoft closed this in 568a2e9 Sep 7, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment