OS X 10.10: NSOpenPanel -> *** Collection <__NSArrayM: 0x600000052f60> was mutated while being enumerated.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • OS X 10.10: NSOpenPanel -> *** Collection <__NSArrayM: 0x600000052f60> was mutated while being enumerated.

    Und zwar passiert das nicht auf allen maschinen sondern nur auf einigen. Keine Ahnung woran es liegen könnte.
    der stacktrace verrät ja auch nicht viel.

    die tester haben eine einzige maschine auf der sies reproduzieren können. denen habe ich ein test-app erstellt (welches ich hier auch anhänge) und auch damit kann es reproduziert werden.

    man öffnet einen open-panel, klickt dann auf "cancel" und versucht ihn nochmal zu öffnen. dies klappt jedoch nicht mehr. auch wenn man es wiederholt versucht.

    hier der code:

    Quellcode

    1. NSOpenPanel *openPanel = [NSOpenPanel openPanel];
    2. [openPanel setAllowsMultipleSelection:NO];
    3. [openPanel setCanChooseDirectories:NO];
    4. [openPanel setResolvesAliases:YES];
    5. [openPanel setCanChooseFiles:YES];
    6. [openPanel setExtensionHidden:NO];
    7. [openPanel setAllowedFileTypes:[NSArray arrayWithObject:@"fcl"]];
    8. [openPanel setTitle:@"TITLE"];
    9. [openPanel setMessage:@"MESSAGE"];
    10. if ([openPanel runModal] == NSOKButton)
    11. {
    12. NSLog(@"OK");
    13. }
    14. else
    15. {
    16. NSLog(@"Cancel");
    17. }
    Alles anzeigen


    und hier der nichtssagende stack-trace:

    ​29/10/14 4:23:15.262 pm OpenPanelCrashTest[44219]: *** Collection <__NSArrayM: 0x600000052f60> was mutated while being enumerated.
    29/10/14 4:23:15.262 pm OpenPanelCrashTest[44219]: (
    0 CoreFoundation 0x00007fff9c1c164c __exceptionPreprocess + 172
    1 libobjc.A.dylib 0x00007fff97b496de objc_exception_throw + 43
    2 CoreFoundation 0x00007fff9c1c0ee5 __NSFastEnumerationMutationHandler + 309
    3 AppKit 0x00007fff9aca2d74 -[NSView _recursiveSendViewDidChangeAppearance:] + 193
    4 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    5 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    6 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    7 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    8 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    9 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    10 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    11 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    12 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    13 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    14 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    15 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    16 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    17 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    18 AppKit 0x00007fff9aca2d8b -[NSView _recursiveSendViewDidChangeAppearance:] + 216
    19 AppKit 0x00007fff9aca2a91 -[NSView setAppearance:] + 205
    20 AppKit 0x00007fff9b2a50fc -[NSThemeFrame setAppearance:] + 52
    21 AppKit 0x00007fff9ac2151a -[NSWindow setAppearance:] + 44
    22 AppKit 0x00007fff9b185033 +[NSSavePanel _crunchyRawUnbonedPanel] + 298
    23 OpenPanelCrashTest 0x00000001000010f4 OpenPanelCrashTest + 4340
    24 libsystem_trace.dylib 0x00007fff9c418cd7 _os_activity_initiate + 75
    25 AppKit 0x00007fff9adb15e7 -[NSApplication sendAction:to:from:] + 410
    26 AppKit 0x00007fff9adb1410 -[NSControl sendAction:to:] + 86
    27 AppKit 0x00007fff9af85daf __26-[NSCell _sendActionFrom:]_block_invoke + 131
    28 libsystem_trace.dylib 0x00007fff9c418cd7 _os_activity_initiate + 75
    29 AppKit 0x00007fff9adf9f2c -[NSCell _sendActionFrom:] + 144
    30 AppKit 0x00007fff9af6cab2 -[NSButtonCell _sendActionFrom:] + 39
    31 libsystem_trace.dylib 0x00007fff9c418cd7 _os_activity_initiate + 75
    32 AppKit 0x00007fff9ae14a66 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2731
    33 AppKit 0x00007fff9ae13cc1 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 491
    34 AppKit 0x00007fff9ae13289 -[NSControl mouseDown:] + 714
    35 AppKit 0x00007fff9b30cfef -[NSWindow _reallySendEvent:] + 12827
    36 AppKit 0x00007fff9ad9765c -[NSWindow sendEvent:] + 368
    37 AppKit 0x00007fff9ad491e6 -[NSApplication sendEvent:] + 2238
    38 AppKit 0x00007fff9abd5fe8 -[NSApplication run] + 711
    39 AppKit 0x00007fff9abc1424 NSApplicationMain + 1832
    40 OpenPanelCrashTest 0x00000001000010c4 OpenPanelCrashTest + 4292
    41 ??? 0x0000000000000001 0x0 + 1
    )
    Dateien
  • ich hatte heute zugriff per teamviewer.

    es passierte nur wenn die sortierung nicht auf "None" oder "Name" war und man (jetzt kommts !!!) einen subfolder selektiert hat. also zb Applications->Adobe oder / -> System.
    App beenden, dann starten und dann auf button clicken, cancel, dann wieder auf button clicken -> exception.
    Ist aber nur auf der maschine reproduzierbar.
    hab dann auch Xcode installiert und das sample mal laufen lassen.
    bringt aber auch nicht viel neues...

    die exception tritt übrigens beim erstellen des openpanels auf, nicht beim anzeigen (wie man vielleicht vermuten könnte).

    im anhang ein screenshot!
    Dateien
  • Auf 10.10 auch mit der Anleitung nicht reproduzierbar.

    Die Subfolder-Selektion wird sich beim Beenden der App nicht gemerkt, erst beim 'Cancel' wird beim erneuten Öffnen des Open Panels in den Subfolder gesprungen.

    Auf jeden Fall schmiert hier nix ab. Weder bei der Sortierung 'Size' noch bei der Sortierung 'Tags'.
    Auch nicht auf einem Netzlaufwerk.

    Kann es sein (vage Vermutung), dass der Anwender auf $irgendein Netzlaufwerk zugreift, dass spontan grad nicht da ist und erst beim Zugriff darauf gemountet wird?
    NAS, FUSE, keine Ahnung, irgendwie sowas.

    Versuchte Konstellationen:
    Von vorn herein gemountete AFP Netzlaufwerke
    Dynamisch dazu gemountete AFP Netzlaufwerke
    Dynamisch dazu gemountete AFP Netzlaufwerke, während die App lief, aber der Open Dialog weg war manuell via umount rausgeworfen.
    Dynamisch dazu gemountete AFP Netzlaufwekre, während der Open Dialog offen war manuell via umount rausgeworfen.

    In den letzten beiden Fällen sieht das Open Panel unter 10.10 erst mal ein bisschen komisch aus, als hätte es sich verschluckt.
    Dann springt es je nach Anwendungsfall (ohne/mit OpenDialog beim umount offen) entweder zurück in den Dokumenteordner oder auf den Computer.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • nur btw, ich hab regelmässig die merkwürdigsten Crashes von Applikationen, inklusive Finder bis hin zu harten Kernelpanics in Zusammenhang mit NFS, unter 10.9. Also zumindest NFS ist sehr, uh, unausgereift? Seltener auch SMB, ich verwende aber fast nur NFS wegen der Performance....
    Wenn ich es morgen nicht vergesse, kann ich das Beispiel mal bei mir testen, aber wie gesagt, ich hab nur 10.9.
    C++
  • Marco Feltmann schrieb:

    Reminder an @zerm +scnr+

    Nicht reproduzierbar. Extra in ein Verzeichnis navigiert auf einem gigantischen NFS mit irgendwas 40000 files, wo der Finder schon immer hängt. Ansonsten Anleitung genau befolgt. Hatte nur einmal den komischen Effekt, dass nach dem Neustarten der Anwendung nur eine kleine Auswahl von Files/Folders auf dem Share gelistet wurden (hatte schon Panik bekommen. Aber alle Daten sind noch da).

    Wenn ich irgendwann mal auf 10.10 upgrade, und es bis dahin nicht gelöst ist, kann ichs nochmal probieren.
    C++