'----QUIT----2016-02-26T15:50:01.311489+01:00 Pharo-50560.image priorSource: 30377673' size => 84! !CrashDetector class methodsFor: 'system startup' stamp: 'ThibaultRaffaillac 2/26/2016 16:47'! initialize SessionManager default registerToolClassNamed: self name.! ! !CrashDetector class methodsFor: 'system startup' stamp: 'ThibaultRaffaillac 2/26/2016 16:47'! startUp: resuming resuming ifTrue: [ self new activate ].! ! !CrashDetector methodsFor: 'activation' stamp: 'ThibaultRaffaillac 2/26/2016 16:02'! activate self crashed ifTrue: [ UIManager default defer: [ self queryUser ] ]! ! !CrashDetector methodsFor: 'detection' stamp: 'ThibaultRaffaillac 2/26/2016 16:46'! crashed "In order to avoid parsing the entire changes file, we go back 200 characters back in time, and get the last chunk from CodeImporter. We measured the current QUIT line to be 84 characters, so we chose 200 to have a safe yet fast margin." | sample stream string | sample := 200. stream := SourceFiles changesFileStream readOnlyCopy. stream setToEnd. "This covers the special case where '!!' is escaped with '!!!!' in changes file." stream upTo: $!!. stream peek = $!! ifTrue: [ stream skip: 1 ]. stream skip: sample negated. string := stream next: sample. ^(((CodeImporter new readStream: string readStream) parseChunks; codeDeclarations) last contents beginsWith: '----QUIT') not! ! !CrashDetector methodsFor: 'activation' stamp: 'ThibaultRaffaillac 2/26/2016 13:59'! queryUser (UIManager default confirm: 'It looks like your image crashed, recover last changes?') ifTrue: [ ExternalChangesBrowser openOnFileName: SourceFiles changesFileStream localName ]! ! "CrashDetector"! ----SNAPSHOT----2016-02-26T17:49:00.769846+01:00 Moose Jenkins-moose-6.0-#1307-moose-6.0.zip-temp.image priorSource: 44039052! StartupPreferencesLoader default executeAtomicItems: { StartupAction name: 'Proxy' code: [ NetworkSystemSettings useHTTPProxy: true; httpProxyPort: 3128; httpProxyServer: #'proxy'. ] runOnce: true. }. ! ----End fileIn----! ----QUIT----2016-02-26T17:50:36.050131+01:00 Moose Jenkins-moose-6.0-#1307-moose-6.0.zip-temp.image priorSource: 44245117! StartupPreferencesLoader default executeAtomicItems: { StartupAction name: 'Proxy' code: [ NetworkSystemSettings useHTTPProxy: true; httpProxyPort: 3128; httpProxyServer: #'proxy'. ] runOnce: true. }. ! ----End fileIn----! StartupPreferencesLoader default executeAtomicItems: { StartupAction name: 'Proxy' code: [ NetworkSystemSettings useHTTPProxy: true; httpProxyPort: 3128; httpProxyServer: #'proxy'. ] runOnce: true. }. ! ----End fileIn----! ----QUIT/NOSAVE----2016-02-26T17:53:48.468244+01:00 Moose Jenkins-moose-6.0-#1307-moose-6.0.zip-temp.image priorSource: 44245508! StartupPreferencesLoader default executeAtomicItems: { StartupAction name: 'Proxy' code: [ NetworkSystemSettings useHTTPProxy: true; httpProxyPort: 3128; httpProxyServer: #'proxy'. ] runOnce: true. }. ! ----End fileIn----! StartupPreferencesLoader default executeAtomicItems: { StartupAction name: 'Proxy' code: [ NetworkSystemSettings useHTTPProxy: true; httpProxyPort: 3128; httpProxyServer: #'proxy'. ] runOnce: true. }. ! ----End fileIn----! StartupPreferencesLoader default executeAtomicItems: { StartupAction name: 'Proxy' code: [ NetworkSystemSettings useHTTPProxy: true; httpProxyPort: 3128; httpProxyServer: #'proxy'. ] runOnce: true. }. ! ----End fileIn----! ----SNAPSHOT----2016-02-29T11:32:25.797216+01:00 Moose Jenkins-moose-6.0-#1307-moose-6.0.zip-temp.image priorSource: 44245508! StartupPreferencesLoader default executeAtomicItems: { StartupAction name: 'Proxy' code: [ NetworkSystemSettings useHTTPProxy: true; httpProxyPort: 3128; httpProxyServer: #'proxy'. ] runOnce: true. }. ! ----End fileIn----!