[Pharo-project] Safe and Quit can be dangerous
I clicked on 'safe and quit' in the latest Pharo 1.0rc1 image. Just before the window closed I saw a debugger popping up and now my image is broken. The VM crashes shortly after being able to interact with it. This is not the first time that happened to me. Below the stack trace of the debugger. Cheers, Lukas MessageNotUnderstood: receiver of "isEmpty" is nil 22 November 2009 1:24:56 pm VM: Mac OS - intel - 1062 - Squeak3.8.1 of '28 Aug 2006' [latest update: #6747] Squeak VM 4.1.1b2 Image: Pharo1.0rc1 [Latest update: #10492] SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/renggli/University/pharo/PetitParser Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/renggli/Library/Preferences/Squeak/Internet/My Squeak UndefinedObject(Object)>>doesNotUnderstand: #isEmpty Receiver: nil Arguments and temporary variables: aMessage: isEmpty exception: MessageNotUnderstood: receiver of "isEmpty" is nil resumeValue: nil Receiver's instance variables: nil MouseOverHandler>>processMouseOver: Receiver: a MouseOverHandler Arguments and temporary variables: <<error during printing> Receiver's instance variables: mouseOverMorphs: an Array(a PluggableStandardWindow(1005) a PasteUpMorph(1622) ...etc... enteredMorphs: nil overMorphs: nil leftMorphs: nil HandMorph>>processEvents Receiver: a HandMorph(3216) Arguments and temporary variables: evt: nil evtBuf: nil type: nil hadAny: nil Receiver's instance variables: bounds: 120@108 corner: 136@124 owner: a PasteUpMorph(1622) [world] submorphs: #() fullBounds: 120@108 corner: 136@124 color: Color blue extension: a MorphExtension (539) [eventHandler = an EventHandler] mouseFocus: nil keyboardFocus: a PluggableButtonMorph(2190) eventListeners: nil mouseListeners: nil keyboardListeners: nil mouseClickState: nil mouseOverHandler: a MouseOverHandler lastMouseEvent: [120@108 mouseUp 2857590 nil] targetOffset: 29@11 damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: true temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil userInitials: '' lastEventBuffer: #(1 2857590 120 108 0 0 0 1) lastKeyScanCode: 35 combinedChar: nil [] in WorldState>>doOneCycleNowFor: Receiver: a WorldState Arguments and temporary variables: h: a HandMorph(3216) Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650 Array(SequenceableCollection)>>do: Receiver: an Array(a HandMorph(3216)) Arguments and temporary variables: aBlock: [closure] in WorldState>>doOneCycleNowFor: index: 1 indexLimiT: 1 Receiver's instance variables: an Array(a HandMorph(3216)) WorldState>>handsDo: Receiver: a WorldState Arguments and temporary variables: aBlock: [closure] in WorldState>>doOneCycleNowFor: Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650 WorldState>>doOneCycleNowFor: Receiver: a WorldState Arguments and temporary variables: aWorld: a PasteUpMorph(1622) [world] Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650 WorldState>>doOneCycleFor: Receiver: a WorldState Arguments and temporary variables: aWorld: a PasteUpMorph(1622) [world] Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650 PasteUpMorph>>doOneCycle Receiver: a PasteUpMorph(1622) [world] Arguments and temporary variables: Receiver's instance variables: bounds: 0@0 corner: 1314@916 owner: nil submorphs: an Array(a TaskbarMorph(3095) a PreDebugWindow(1012) a SystemWindow(...etc... fullBounds: nil color: (Color r: 0.97 g: 0.98 b: 1.0) extension: a MorphExtension (2543) [eventHandler = an EventHandler] [other: (...etc... borderWidth: 0 borderColor: (Color r: 0.03 g: 0.02 b: 0.0) presenter: a Presenter (1246) model: a MorphicModel(1926) cursor: 1 padding: 3 backgroundMorph: nil isPartsBin: nil autoLineLayout: false indicateCursor: nil resizeToFit: nil wantsMouseOverHalos: nil worldState: a WorldState griddingOn: nil [] in Project class>>spawnNewProcess Receiver: Project Arguments and temporary variables: Receiver's instance variables: superclass: Model methodDict: a MethodDictionary(size 167) format: 172 instanceVariables: #('world' 'changeSet' 'transcript' 'parentProject' 'previous...etc... organization: ('*Polymorph-Widgets' assureTaskbarPresenceMatchesPreference crea...etc... subclasses: nil name: #Project classPool: a Dictionary(#AllProjects->an OrderedCollection(a Project(Unnamed)) ...etc... sharedPools: nil environment: Smalltalk category: #'System-Support' traitComposition: {} localSelectors: nil [] in BlockClosure>>newProcess Receiver: [closure] in Project class>>spawnNewProcess Arguments and temporary variables: Receiver's instance variables: outerContext: Project class>>spawnNewProcess startpc: 53 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #isEmpty MouseOverHandler>>processMouseOver: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess [] in BlockClosure>>newProcess ------------------------------------------------------------ -- Lukas Renggli http://www.lukas-renggli.ch
Lukas, I wish you good luck in recovering your work; hopefully the change log will allow you to avoid losses. Perhaps a toolsmith among us can take a look at Ian Bartholomew's Chunk Browser for Dolphin and do something similar on Pharo; it is a very helpful tool. Another one I would like to see is Ghoul, which provides a debugger-like view of Dolphin's crash logs. Not at all to say "I told you so," I have been arguing against save+quit for years, precissely because I was shafted by it in the past. That was on Smalltalk/V, but I have been skiddish about it ever since. If something bad happens post-save, you have no chance to fix it. In your case, the image might have melted down anyway, so good backups and recovery tools are a must. Bill -----Original Message----- From: pharo-project-bounces@lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Lukas Renggli Sent: Sunday, November 22, 2009 11:02 AM To: Pharo Development Subject: [Pharo-project] Safe and Quit can be dangerous I clicked on 'safe and quit' in the latest Pharo 1.0rc1 image. Just before the window closed I saw a debugger popping up and now my image is broken. The VM crashes shortly after being able to interact with it. This is not the first time that happened to me. Below the stack trace of the debugger. Cheers, Lukas MessageNotUnderstood: receiver of "isEmpty" is nil 22 November 2009 1:24:56 pm VM: Mac OS - intel - 1062 - Squeak3.8.1 of '28 Aug 2006' [latest update: #6747] Squeak VM 4.1.1b2 Image: Pharo1.0rc1 [Latest update: #10492] SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/renggli/University/pharo/PetitParser Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/renggli/Library/Preferences/Squeak/Internet/My Squeak UndefinedObject(Object)>>doesNotUnderstand: #isEmpty Receiver: nil Arguments and temporary variables: aMessage: isEmpty exception: MessageNotUnderstood: receiver of "isEmpty" is nil resumeValue: nil Receiver's instance variables: nil MouseOverHandler>>processMouseOver: Receiver: a MouseOverHandler Arguments and temporary variables: <<error during printing> Receiver's instance variables: mouseOverMorphs: an Array(a PluggableStandardWindow(1005) a PasteUpMorph(1622) ...etc... enteredMorphs: nil overMorphs: nil leftMorphs: nil HandMorph>>processEvents Receiver: a HandMorph(3216) Arguments and temporary variables: evt: nil evtBuf: nil type: nil hadAny: nil Receiver's instance variables: bounds: 120@108 corner: 136@124 owner: a PasteUpMorph(1622) [world] submorphs: #() fullBounds: 120@108 corner: 136@124 color: Color blue extension: a MorphExtension (539) [eventHandler = an EventHandler] mouseFocus: nil keyboardFocus: a PluggableButtonMorph(2190) eventListeners: nil mouseListeners: nil keyboardListeners: nil mouseClickState: nil mouseOverHandler: a MouseOverHandler lastMouseEvent: [120@108 mouseUp 2857590 nil] targetOffset: 29@11 damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: true temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil userInitials: '' lastEventBuffer: #(1 2857590 120 108 0 0 0 1) lastKeyScanCode: 35 combinedChar: nil [] in WorldState>>doOneCycleNowFor: Receiver: a WorldState Arguments and temporary variables: h: a HandMorph(3216) Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650 Array(SequenceableCollection)>>do: Receiver: an Array(a HandMorph(3216)) Arguments and temporary variables: aBlock: [closure] in WorldState>>doOneCycleNowFor: index: 1 indexLimiT: 1 Receiver's instance variables: an Array(a HandMorph(3216)) WorldState>>handsDo: Receiver: a WorldState Arguments and temporary variables: aBlock: [closure] in WorldState>>doOneCycleNowFor: Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650 WorldState>>doOneCycleNowFor: Receiver: a WorldState Arguments and temporary variables: aWorld: a PasteUpMorph(1622) [world] Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650 WorldState>>doOneCycleFor: Receiver: a WorldState Arguments and temporary variables: aWorld: a PasteUpMorph(1622) [world] Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650 PasteUpMorph>>doOneCycle Receiver: a PasteUpMorph(1622) [world] Arguments and temporary variables: Receiver's instance variables: bounds: 0@0 corner: 1314@916 owner: nil submorphs: an Array(a TaskbarMorph(3095) a PreDebugWindow(1012) a SystemWindow(...etc... fullBounds: nil color: (Color r: 0.97 g: 0.98 b: 1.0) extension: a MorphExtension (2543) [eventHandler = an EventHandler] [other: (...etc... borderWidth: 0 borderColor: (Color r: 0.03 g: 0.02 b: 0.0) presenter: a Presenter (1246) model: a MorphicModel(1926) cursor: 1 padding: 3 backgroundMorph: nil isPartsBin: nil autoLineLayout: false indicateCursor: nil resizeToFit: nil wantsMouseOverHalos: nil worldState: a WorldState griddingOn: nil [] in Project class>>spawnNewProcess Receiver: Project Arguments and temporary variables: Receiver's instance variables: superclass: Model methodDict: a MethodDictionary(size 167) format: 172 instanceVariables: #('world' 'changeSet' 'transcript' 'parentProject' 'previous...etc... organization: ('*Polymorph-Widgets' assureTaskbarPresenceMatchesPreference crea...etc... subclasses: nil name: #Project classPool: a Dictionary(#AllProjects->an OrderedCollection(a Project(Unnamed)) ...etc... sharedPools: nil environment: Smalltalk category: #'System-Support' traitComposition: {} localSelectors: nil [] in BlockClosure>>newProcess Receiver: [closure] in Project class>>spawnNewProcess Arguments and temporary variables: Receiver's instance variables: outerContext: Project class>>spawnNewProcess startpc: 53 numArgs: 0 --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #isEmpty MouseOverHandler>>processMouseOver: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess [] in BlockClosure>>newProcess ------------------------------------------------------------ -- Lukas Renggli http://www.lukas-renggli.ch _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
This seems related to http://code.google.com/p/pharo/issues/detail?id=889 which was only integrated in 1.1. I don't understand why we didn't put this in 1.0 too. Adrian On Nov 22, 2009, at 17:02 , Lukas Renggli wrote:
I clicked on 'safe and quit' in the latest Pharo 1.0rc1 image. Just before the window closed I saw a debugger popping up and now my image is broken. The VM crashes shortly after being able to interact with it. This is not the first time that happened to me.
Below the stack trace of the debugger.
Cheers, Lukas
MessageNotUnderstood: receiver of "isEmpty" is nil 22 November 2009 1:24:56 pm
VM: Mac OS - intel - 1062 - Squeak3.8.1 of '28 Aug 2006' [latest update: #6747] Squeak VM 4.1.1b2 Image: Pharo1.0rc1 [Latest update: #10492]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/renggli/University/pharo/PetitParser Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/renggli/Library/Preferences/Squeak/Internet/My Squeak
UndefinedObject(Object)>>doesNotUnderstand: #isEmpty Receiver: nil Arguments and temporary variables: aMessage: isEmpty exception: MessageNotUnderstood: receiver of "isEmpty" is nil resumeValue: nil Receiver's instance variables: nil
MouseOverHandler>>processMouseOver: Receiver: a MouseOverHandler Arguments and temporary variables: <<error during printing> Receiver's instance variables: mouseOverMorphs: an Array(a PluggableStandardWindow(1005) a PasteUpMorph(1622) ...etc... enteredMorphs: nil overMorphs: nil leftMorphs: nil
HandMorph>>processEvents Receiver: a HandMorph(3216) Arguments and temporary variables: evt: nil evtBuf: nil type: nil hadAny: nil Receiver's instance variables: bounds: 120@108 corner: 136@124 owner: a PasteUpMorph(1622) [world] submorphs: #() fullBounds: 120@108 corner: 136@124 color: Color blue extension: a MorphExtension (539) [eventHandler = an EventHandler] mouseFocus: nil keyboardFocus: a PluggableButtonMorph(2190) eventListeners: nil mouseListeners: nil keyboardListeners: nil mouseClickState: nil mouseOverHandler: a MouseOverHandler lastMouseEvent: [120@108 mouseUp 2857590 nil] targetOffset: 29@11 damageRecorder: a DamageRecorder cacheCanvas: nil cachedCanvasHasHoles: true temporaryCursor: nil temporaryCursorOffset: nil hardwareCursor: nil hasChanged: true savedPatch: nil userInitials: '' lastEventBuffer: #(1 2857590 120 108 0 0 0 1) lastKeyScanCode: 35 combinedChar: nil
[] in WorldState>>doOneCycleNowFor: Receiver: a WorldState Arguments and temporary variables: h: a HandMorph(3216) Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650
Array(SequenceableCollection)>>do: Receiver: an Array(a HandMorph(3216)) Arguments and temporary variables: aBlock: [closure] in WorldState>>doOneCycleNowFor: index: 1 indexLimiT: 1 Receiver's instance variables: an Array(a HandMorph(3216))
WorldState>>handsDo: Receiver: a WorldState Arguments and temporary variables: aBlock: [closure] in WorldState>>doOneCycleNowFor: Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650
WorldState>>doOneCycleNowFor: Receiver: a WorldState Arguments and temporary variables: aWorld: a PasteUpMorph(1622) [world] Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650
WorldState>>doOneCycleFor: Receiver: a WorldState Arguments and temporary variables: aWorld: a PasteUpMorph(1622) [world] Receiver's instance variables: hands: an Array(a HandMorph(3216)) viewBox: 0@0 corner: 1314@916 canvas: a FormCanvas on: DisplayScreen(1314x916x32) damageRecorder: a DamageRecorder stepList: a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1012))(a PreDebugWind...etc... lastStepTime: 2857650 lastStepMessage: nil lastCycleTime: 2857677 commandHistory: a CommandHistory alarms: a Heap() lastAlarmTime: 2857650
PasteUpMorph>>doOneCycle Receiver: a PasteUpMorph(1622) [world] Arguments and temporary variables:
Receiver's instance variables: bounds: 0@0 corner: 1314@916 owner: nil submorphs: an Array(a TaskbarMorph(3095) a PreDebugWindow(1012) a SystemWindow(...etc... fullBounds: nil color: (Color r: 0.97 g: 0.98 b: 1.0) extension: a MorphExtension (2543) [eventHandler = an EventHandler] [other: (...etc... borderWidth: 0 borderColor: (Color r: 0.03 g: 0.02 b: 0.0) presenter: a Presenter (1246) model: a MorphicModel(1926) cursor: 1 padding: 3 backgroundMorph: nil isPartsBin: nil autoLineLayout: false indicateCursor: nil resizeToFit: nil wantsMouseOverHalos: nil worldState: a WorldState griddingOn: nil
[] in Project class>>spawnNewProcess Receiver: Project Arguments and temporary variables:
Receiver's instance variables: superclass: Model methodDict: a MethodDictionary(size 167) format: 172 instanceVariables: #('world' 'changeSet' 'transcript' 'parentProject' 'previous...etc... organization: ('*Polymorph-Widgets' assureTaskbarPresenceMatchesPreference crea...etc... subclasses: nil name: #Project classPool: a Dictionary(#AllProjects->an OrderedCollection(a Project(Unnamed)) ...etc... sharedPools: nil environment: Smalltalk category: #'System-Support' traitComposition: {} localSelectors: nil
[] in BlockClosure>>newProcess Receiver: [closure] in Project class>>spawnNewProcess Arguments and temporary variables:
Receiver's instance variables: outerContext: Project class>>spawnNewProcess startpc: 53 numArgs: 0
--- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #isEmpty MouseOverHandler>>processMouseOver: HandMorph>>processEvents [] in WorldState>>doOneCycleNowFor: Array(SequenceableCollection)>>do: WorldState>>handsDo: WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess [] in BlockClosure>>newProcess ------------------------------------------------------------
-- Lukas Renggli http://www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
2009/11/22 Adrian Lienhard <adi@netstyle.ch>:
This seems related to
http://code.google.com/p/pharo/issues/detail?id=889
which was only integrated in 1.1. I don't understand why we didn't put this in 1.0 too.
Indeed, that looks related. @Bill: Thanks for sharing the ideas. There is a browser (Tools > Recover Lost Changes) where you can see restore most changes. Luckily I just committed everything to Monticello, so this is no big deal. I will just have to build a new image the next time I continue ... Lukas -- Lukas Renggli http://www.lukas-renggli.ch
On Nov 22, 2009, at 5:33 PM, Lukas Renggli wrote:
2009/11/22 Adrian Lienhard <adi@netstyle.ch>:
This seems related to
http://code.google.com/p/pharo/issues/detail?id=889
which was only integrated in 1.1. I don't understand why we didn't put this in 1.0 too.
Indeed, that looks related.
I tagged it 1.0 and unclosed it. Marcus
Lukas, Glad to hear your code is safe. I am aware of the recover lost changes feature, and have been helped by it once or twice, but I find it cumbersome compared to Ian's Chunk Browser; he did a wonderful job with it, and archives of the Dolphin groups are full of testimonials. Bill -----Original Message----- From: pharo-project-bounces@lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Lukas Renggli Sent: Sunday, November 22, 2009 11:33 AM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] Safe and Quit can be dangerous 2009/11/22 Adrian Lienhard <adi@netstyle.ch>:
This seems related to
http://code.google.com/p/pharo/issues/detail?id=889
which was only integrated in 1.1. I don't understand why we didn't put this in 1.0 too.
Indeed, that looks related. @Bill: Thanks for sharing the ideas. There is a browser (Tools > Recover Lost Changes) where you can see restore most changes. Luckily I just committed everything to Monticello, so this is no big deal. I will just have to build a new image the next time I continue ... Lukas -- Lukas Renggli http://www.lukas-renggli.ch _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
participants (4)
-
Adrian Lienhard -
Lukas Renggli -
Marcus Denker -
Schwab,Wilhelm K