iceberg
iceberg copied to clipboard
Commit window: Revert action produce a debugger
Since a few versions of Pharo 13 now when I revert something in the commit window of Iceberg I get a debugger saying that an entity of the name of what I removed was not found in a collection.
This was not happening recently
Dictionary>>errorKeyNotFound: [self errorKeyNotFound: key] in Dictionary>>removeKey: in Block: [self errorKeyNotFound: key] Dictionary>>removeKey:ifAbsent: Dictionary>>removeKey: IceNode>>removeChild: IceTipDiffSelectingPanel(IceTipDiffPanel)>>diffEntryRemoved: MessageSend>>value: MessageSend>>cull: MessageSend>>cull:cull: [ action cull: anAnnouncement cull: announcer ] in AnnouncementSubscription(AbstractAnnouncementSubscription)>>deliver: in Block: [ action cull: anAnnouncement cull: announcer ] FullBlockClosure(BlockClosure)>>on:do: [ Processor terminateRealActive ] in [ :ex | | onDoCtx handler bottom thisCtx | onDoCtx := thisContext. thisCtx := onDoCtx home.
"find the context on stack for which this method's is sender"
[ onDoCtx sender == thisCtx ] whileFalse: [
onDoCtx := onDoCtx sender.
onDoCtx ifNil: [ "Can't find our home context. seems like we're already forked
and handling another exception in new thread. In this case, just pass it through handler."
^ handlerAction cull: ex ] ].
bottom := [ Processor terminateRealActive ] asContext.
onDoCtx privSender: bottom.
handler := [ handlerAction cull: ex ] asContext.
handler privSender: thisContext sender.
(Process forContext: handler priority: Processor activePriority) resume.
"cut the stack of current process"
thisContext privSender: thisCtx.
nil ] in FullBlockClosure(BlockClosure)>>on:fork: in Block: [ Processor terminateRealActive ]
For the person taking this:
- try finding what Pharo build and PR that introduced the issue using the launcher (https://thepharo.dev/2020/11/23/bisecting-pharo-versions-to-find-regressions/). The objective here is to find the change, not to blame anybody, we are all entitled to make errors!
- try writing a test reproducing the issue. I understand that it's difficult to write a test for code we don't know, but I think there are great things to learn if we make an effort to test it.
- if you have a test + the cause => you can try to make a fix!