<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2017-12-05 23:02 GMT+01:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div>OK, it's more complex (readLimit only refers to available buffer length not file length) and more simple than that...</div><div><br></div>Just trying with:<br><br>../../../products/sqcogspurlin<wbr>ux/lib/squeak/5.0-201711262336<wbr>/squeak TravisCI.image <a href="http://test.st" target="_blank">test.st</a> <br><br></div>letting it run a few minutes and interrupting it, I'm in the infinite loop (nextChunk = '').<br></div>That's because the method thinks it is written at position 11319975 (it might differ for you, because I launched the <a href="http://test.st" target="_blank">test.st</a> several times)<br></div>But the read only copy thinks it is already atEnd at position 11320088</div><div>So it reads an empty chunk without making progress and will loop infinitely...<br></div><div><br></div></div></div></div></div></div></blockquote><div><br></div><div>Ahem, I don't remember to which substance I was exposed yesterday, those are the wrong figures...</div><div>But the diagnosis is correct/reproducible today:</div><div><br></div><div>10483842 is the position where we search for method source<br></div><div>10483729 is the current (file position) and (file atEnd) is true, so we cannot go beyond that...</div><div>The readOnlyCopy looks like truncated...</div><div><br></div><div>Flushing the original before doing a readOnlyCopy is an effective workaround.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div></div>I think that (SourceFiles at: 2) was not flushed and the readOnlyCopy is then shorten.<br></div>This happens only in linux, because only in recent linux we have this problem that opening an already opened file does not take care of pending buffer of already opened file...<br><br></div>We can work around for now by forcing a flush in readOnlyCopy:</div><div><br></div>StandardFileStream>><wbr>readOnlyCopy<br>    self flush.<br>    ^ self class readOnlyFileNamed: self name.<br><br></div>Having this method in the image lets the tests pass in linux...<br><div><div><div><br><br></div></div></div></div><div class="gmail-HOEnZb"><div class="gmail-h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-12-04 23:19 GMT+01:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@<wbr>gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Just for the fun, I did a system tracing...<br><br>strace ../../../products/sqcogspurlin<wbr>ux/lib/squeak/5.0-201711262336<wbr>/squeak TravisCI.image <a href="http://test.st" target="_blank">test.st</a>  > tmp.log 2>tmp.trace<br></div><div>Then interrupted and quit the image</div><div><br></div>It's amazing how many time we stat/open the changes file...<br>grep changes tmp.trace | grep open | wc<br>   3027   15226  511279<br><br></div>sometimes, we open many .changes in a row and the file index keep increasing, like:<br></div><div><br></div><div>lstat64("/media/psf/Home/Small<wbr>talk/OpenSmalltalk/opensmallta<wbr>lk-vm/smalltalkCI-master/_<wbr>builds/2017_12_04_22_07_37/<wbr>TravisCI.changes", {st_mode=S_IFREG|0644, st_size=10701044, ...}) = 0<br>open("/media/psf/Home/Smalltal<wbr>k/OpenSmalltalk/opensmalltalk-<wbr>vm/smalltalkCI-master/_builds/<wbr>2017_12_04_22_07_37/TravisCI.<wbr>changes", O_RDONLY|O_LARGEFILE) = 206<br>lstat64("/media/psf/Home/Small<wbr>talk/OpenSmalltalk/opensmallta<wbr>lk-vm/smalltalkCI-master/_<wbr>builds/2017_12_04_22_07_37/<wbr>TravisCI.changes", {st_mode=S_IFREG|0644, st_size=10701077, ...}) = 0<br>open("/media/psf/Home/Smalltal<wbr>k/OpenSmalltalk/opensmalltalk-<wbr>vm/smalltalkCI-master/_builds/<wbr>2017_12_04_22_07_37/TravisCI.<wbr>changes", O_RDONLY|O_LARGEFILE) = 208<br>lstat64("/media/psf/Home/Small<wbr>talk/OpenSmalltalk/opensmallta<wbr>lk-vm/smalltalkCI-master/_<wbr>builds/2017_12_04_22_07_37/<wbr>TravisCI.changes", {st_mode=S_IFREG|0644, st_size=10701103, ...}) = 0<br>open("/media/psf/Home/Smalltal<wbr>k/OpenSmalltalk/opensmalltalk-<wbr>vm/smalltalkCI-master/_builds/<wbr>2017_12_04_22_07_37/TravisCI.<wbr>changes", O_RDONLY|O_LARGEFILE) = 10<br>lstat64("/media/psf/Home/Small<wbr>talk/OpenSmalltalk/opensmallta<wbr>lk-vm/smalltalkCI-master/_<wbr>builds/2017_12_04_22_07_37/<wbr>TravisCI.changes", {st_mode=S_IFREG|0644, st_size=10701816, ...}) = 0<br>open("/media/psf/Home/Smalltal<wbr>k/OpenSmalltalk/opensmalltalk-<wbr>vm/smalltalkCI-master/_builds/<wbr>2017_12_04_22_07_37/TravisCI.<wbr>changes", O_RDONLY|O_LARGEFILE) = 12<br>lstat64("/media/psf/Home/Small<wbr>talk/OpenSmalltalk/opensmallta<wbr>lk-vm/smalltalkCI-master/_<wbr>builds/2017_12_04_22_07_37/<wbr>TravisCI.changes", {st_mode=S_IFREG|0644, st_size=10701900, ...}) = 0<br>open("/media/psf/Home/Smalltal<wbr>k/OpenSmalltalk/opensmalltalk-<wbr>vm/smalltalkCI-master/_builds/<wbr>2017_12_04_22_07_37/TravisCI.<wbr>changes", O_RDONLY|O_LARGEFILE) = 14<br><br></div>This is the famous case when we can exhaust the maximum number of opened files...<br></div>I don't remembered if we installed a workaround at image side?<br></div>But obviously we do not behave so well with respect to external resources...<br><div><div><div><div><br></div><div>Then I see patterns where we read .changes a few times every 2ms... like this:</div><div><br></div><div>open("/media/psf/Home/Smalltal<wbr>k/OpenSmalltalk/opensmalltalk-<wbr>vm/smalltalkCI-master/_builds/<wbr>2017_12_04_22_<br>07_37/TravisCI.changes", O_RDONLY|O_LARGEFILE) = 9<br>fcntl64(9, F_GETFL)                     = 0x8000 (flags O_RDONLY|O_LARGEFILE)<br>fstat64(9, {st_mode=S_IFREG|0644, st_size=10762271, ...}) = 0<br>fstat64(9, {st_mode=S_IFREG|0644, st_size=10762271, ...}) = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=234913}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2079) = 2079<br>_llseek(9, 0, [0], SEEK_SET)            = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2042) = 2042<br>read(9, ": '' prior: 44316480!\roverride ^"..., 4096) = 37<br>read(9, "", 4096)                       = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=237225}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=239103}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2078) = 2078<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=241003}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 2078<br>_llseek(9, 10762270, [10762270], SEEK_SET) = 0<br>read(9, "!", 4096)                      = 1<br>read(9, "", 4096)                       = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2078) = 2078<br>read(9, "!", 4096)                      = 1<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=243052}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 1<br>read(9, "", 4096)                       = 0<br>recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)<br>_newselect(5, [4], [], [4], {tv_sec=0, tv_usec=0}) = 0 (Timeout)<br>read(9, "", 4096)                       = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>read(9, "", 4096)                       = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=245075}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2079) = 2079<br>read(9, "", 4096)                       = 0<br>read(9, "", 4096)                       = 0<br>read(9, "", 4096)                       = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=247097}, NULL) = 0<br></div><div>sigreturn({mask=[]})          <wbr>          = 0<br>read(9, "", 4096)                       = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2079) = 2079<br>read(9, "", 4096)                       = 0<br>read(9, "", 4096)                       = 0<br>read(9, "", 4096)                       = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=248983}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>read(9, "", 4096)                       = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2079) = 2079<br>read(9, "", 4096)                       = 0<br>read(9, "", 4096)                       = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=251019}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>read(9, "", 4096)                       = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>read(9, "", 4096)                       = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2079) = 2079<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242243<wbr>0, tv_usec=253017}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 2079<br>...</div><div><br></div><div>It looks like we are looping like this during 103 seconds (I let sufficient time before pressing ctrl+alt+.)<br></div><div><br></div><div>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242253<wbr>3, tv_usec=555087}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2079) = 2079<br>read(9, "", 4096)                       = 0<br>read(9, "", 4096)                       = 0<br>read(9, "", 4096)                       = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242253<wbr>3, tv_usec=556985}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>_llseek(9, 0, [10762271], SEEK_CUR)     = 0<br>read(9, "", 4096)                       = 0<br>_llseek(9, 10760192, [10760192], SEEK_SET) = 0<br>read(9, "ceVariableNames: ''\r\tclassVariab"..., 2079) = 2079<br>read(9, "", 4096)                       = 0<br>read(9, "", 4096)                       = 0<br>--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---<br>gettimeofday({tv_sec=151242253<wbr>3, tv_usec=559009}, NULL) = 0<br>sigreturn({mask=[]})          <wbr>          = 0<br>gettimeofday({tv_sec=151242253<wbr>3, tv_usec=559419}, NULL) = 0<br>gettimeofday({tv_sec=151242253<wbr>3, tv_usec=559628}, NULL) = 0<br>gettimeofday({tv_sec=151242253<wbr>3, tv_usec=559830}, NULL) = 0</div><div><br></div><div>It's not the good way to find the bug, bt it's interesting...<br></div></div></div></div></div><div class="gmail-m_3482235656660209813HOEnZb"><div class="gmail-m_3482235656660209813h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-12-04 21:58 GMT+01:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmai<wbr>l.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div>Hi Fabio,<br></div>no, I opened the test image --headfull and it is blocked in tests:<br><br>MCMockPackageInfo(PackageInfo) changeRecordForOverriddenMetho<wbr>d:<br><br></div>with parameter: a MethodReference MCMethodDefinitionTest >> #override<br><br></div>This is invoked from MCMethodDefinition>>tearDown.<br><br></div>It is blocked in this infinite loop:<br><br>        [file position < (position-1)]  "then pick it up from the front"<br>            whileTrue: [chunk := file nextChunk].<br><br></div>here file position is 0, and inst. var. readLimit is 0 too...<br></div>So nextChunk invariably return '' and the position does not advance.<br><br></div>Why is readLimit 0???<br></div>The file is TravisCI.changes and I can open and read it normally in the FileList.<br></div>The problem comes from SourceFiles which already has an incorrect readLimit set to zero (image attached)<br><br></div>It remains to discover how this ever happened, and why only in linux...<br><div><div><div><div><div><div><div><div><div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2017-12-04 7:35 GMT+01:00 Fabio Niephaus <span dir="ltr"><<a href="mailto:lists@fniephaus.com" target="_blank">lists@fniephaus.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br><div>Hi Nicolas,<br>Is it possible that this was related to this:<br><a href="http://forum.world.st/Squeak-trunk-updates-fail-td5059208.html" target="_blank">http://forum.world.st/Squeak-t<wbr>runk-updates-fail-td5059208.ht<wbr>ml</a><br><br>Best,<br>Fabio</div><div><div class="gmail-m_3482235656660209813m_-1062043487601960604h5"><div><br><div class="gmail_quote"><div>On Sun, 3 Dec 2017 at 11:08 am, Nicolas Cellier <<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmai<wbr>l.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <div><div><div><div><div><div><div><div><div><div><div>Hi,<br></div>for quite some times the travis build for linux32x86 times out during the .travis_test.sh phase.<br><br></div>It's very hard for me to build a 32bits vm from 64bits ubuntu (14.xx). So I've tried with a 32bits VM (debian9), changed to opensmalltalk root directory of my working copy, and<br><br></div>export ARCH="linux32x86"<br>export FLAVOR="squeak.cog.spur"<br>export TRAVIS_BUILD_DIR=`pwd`<br></div>export TRAVIS_OS_NAME=linux<br></div>./.travis_build.sh<br></div>./.travis_test.sh<br><br></div>The tests effectively seem to block with 100% CPU.<br><br></div>So I performed a few stack dump via kill -USR1, and it seems that tests are stuck in a very long operation, here is one of the samples:<br><br>All Smalltalk process stacks (active first):<br>Process  0x192cda8 priority 40<br>0xbfc67d94 M MultiByteFileStream(StandardFi<wbr>leStream)>basicNext 0x129bdc8: a(n) MultiByteFileStream<br>0xbfc67db0 M UTF8TextConverter>skipSeparato<wbr>rsAndPeekNextFrom: 0x129bd58: a(n) UTF8TextConverter<br>0xbfc67dd0 M UTF8TextConverter>parseLangTag<wbr>For:fromStream: 0x129bd58: a(n) UTF8TextConverter<br>0xbfc67df0 M UTF8TextConverter>nextChunkFro<wbr>mStream: 0x129bd58: a(n) UTF8TextConverter<br>0xbfc67e0c M MultiByteFileStream>nextChunk 0x129bdc8: a(n) MultiByteFileStream<br>0xbfc67e5c M [] in MCMockPackageInfo(PackageInfo)<wbr>>changeRecordsForMethod:do: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc67e7c M BlockClosure>ensure: 0x129bf80: a(n) BlockClosure<br>0xbfc74bb0 M MCMockPackageInfo(PackageInfo)<wbr>>changeRecordsForMethod:do: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74bd0 M MCMockPackageInfo(PackageInfo)<wbr>>changeRecordForOverriddenMeth<wbr>od: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74bec M MCMockPackageInfo(PackageInfo)<wbr>>isOverrideOfYourMethod: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74c0c M [] in MCMockPackageInfo(PackageInfo)<wbr>>overriddenMethodsDo: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74c30 M [] in MCMockPackageInfo(PackageInfo)<wbr>>methodsInCategory:ofClass:do: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74c54 M Array(SequenceableCollection)><wbr>do: 0x129d178: a(n) Array<br>0xbfc74c70 M MCMockPackageInfo(PackageInfo)<wbr>>methodsInCategory:ofClass:do: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74c9c M [] in MCMockPackageInfo(PackageInfo)<wbr>>overriddenMethodsInClass:do: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74cbc M [] in MCMockPackageInfo(PackageInfo)<wbr>>overrideCategoriesForClass:do<wbr>: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74ce0 M Array(SequenceableCollection)><wbr>do: 0x129aa48: a(n) Array<br>0xbfc74cfc M MCMockPackageInfo(PackageInfo)<wbr>>overrideCategoriesForClass:do<wbr>: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74d1c M MCMockPackageInfo(PackageInfo)<wbr>>overriddenMethodsInClass:do: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74d40 M [] in MCMockPackageInfo(PackageInfo)<wbr>>allOverriddenMethodsDo: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc74d60 M [] in MCTestCase class(Behavior)>allSubclassesD<wbr>o: 0x1b38d88: a(n) MCTestCase class<br>0xbfc74d84 M Array(SequenceableCollection)><wbr>do: 0x1ae4c70: a(n) Array<br>0xbfc74da0 M MCTestCase class(Class)>subclassesDo: 0x1b38d88: a(n) MCTestCase class<br>0xbfc74dbc M MCTestCase class(Behavior)>allSubclassesD<wbr>o: 0x1b38d88: a(n) MCTestCase class<br>0xbfc74ddc M [] in TestCase class(Behavior)>allSubclassesD<wbr>o: 0x1b35988: a(n) TestCase class<br>0xbfc74e00 M Array(SequenceableCollection)><wbr>do: 0x27fa510: a(n) Array<br>0xbfc74e1c M TestCase class(Class)>subclassesDo: 0x1b35988: a(n) TestCase class<br>0xbfc74e38 M TestCase class(Behavior)>allSubclassesD<wbr>o: 0x1b35988: a(n) TestCase class<br>0xbfc74e58 M [] in Object class(Behavior)>allSubclassesD<wbr>o: 0x1a25910: a(n) Object class<br>0xbfc74e7c M Array(SequenceableCollection)><wbr>do: 0x1297d50: a(n) Array<br>0xbfc6bb9c M Object class(Class)>subclassesDo: 0x1a25910: a(n) Object class<br>0xbfc6bbb8 M Object class(Behavior)>allSubclassesD<wbr>o: 0x1a25910: a(n) Object class<br>0xbfc6bbd8 M [] in ProtoObject class(Behavior)>allSubclassesD<wbr>o: 0x1a25a98: a(n) ProtoObject class<br>0xbfc6bbfc M Array(SequenceableCollection)><wbr>do: 0x4334a28: a(n) Array<br>0xbfc6bc18 M ProtoObject class(Class)>subclassesDo: 0x1a25a98: a(n) ProtoObject class<br>0xbfc6bc34 M ProtoObject class(Behavior)>allSubclassesD<wbr>o: 0x1a25a98: a(n) ProtoObject class<br>0xbfc6bc58 I ProtoObject class(Behavior)>withAllSubclas<wbr>sesDo: 0x1a25a98: a(n) ProtoObject class<br>0xbfc6bc74 M MCMockPackageInfo(PackageInfo)<wbr>>allOverriddenMethodsDo: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc6bc90 M MCMockPackageInfo(PackageInfo)<wbr>>overriddenMethodsDo: 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc6bcac M [] in MCMockPackageInfo(PackageInfo)<wbr>>overriddenMethods 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc6bcd0 M Array class(SequenceableCollection class)>new:streamContents: 0x1a124a8: a(n) Array class<br>0xbfc6bcf0 M Array class(SequenceableCollection class)>streamContents: 0x1a124a8: a(n) Array class<br>0xbfc6bd0c M MCMockPackageInfo(PackageInfo)<wbr>>overriddenMethods 0x1a265d0: a(n) MCMockPackageInfo<br>0xbfc6bd2c M [] in MCPackage>snapshot 0x129ca58: a(n) MCPackage<br>0xbfc6bd48 M BlockClosure>on:do: 0x129cac8: a(n) BlockClosure<br>0xbfc6bd6c M CurrentReadOnlySourceFiles class>cacheDuring: 0x1baa718: a(n) CurrentReadOnlySourceFiles class<br>0xbfc6bd94 M MCPackage>snapshot 0x129ca58: a(n) MCPackage<br>0xbfc6bdb4 M MCPackageLoader>updatePackage:<wbr>withSnapshot: 0x129cc40: a(n) MCPackageLoader<br>0xbfc6bde0 I MCPackageLoader class>updatePackage:withSnapsh<wbr>ot: 0x1c00d30: a(n) MCPackageLoader class<br>0xbfc6be08 I MCSnapshot>updatePackage: 0x4148418: a(n) MCSnapshot<br>0xbfc6be2c I MCMethodDefinitionTest(MCTestC<wbr>ase)>restoreMocks 0x4049e20: a(n) MCMethodDefinitionTest<br>0xbfc6be44 M MCMethodDefinitionTest>tearDow<wbr>n 0x4049e20: a(n) MCMethodDefinitionTest<br>0xbfc6be5c M [] in MCMethodDefinitionTest(TestCas<wbr>e)>runCase 0x4049e20: a(n) MCMethodDefinitionTest<br>0xbfc6be7c M MethodContext(ContextPart)>res<wbr>ume: 0x129c2e0: a(n) MethodContext<br>0xbfc68c2c M BlockClosure>ensure: 0x129c128: a(n) BlockClosure<br>0xbfc68c48 M MCMethodDefinitionTest(TestCas<wbr>e)>runCase 0x4049e20: a(n) MCMethodDefinitionTest<br>0xbfc68c60 M SCISqueakTestRunner(SCITestRun<wbr>ner)>basicRunCase: 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68c80 M [] in SCISqueakTestRunner(SCITestRun<wbr>ner)>runCase: 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68c9c M BlockClosure>on:do: 0x129c218: a(n) BlockClosure<br>0xbfc68cc4 M [] in SCISqueakTestRunner(SCITestRun<wbr>ner)>runCase: 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68ce0 M BlockClosure>on:do: 0x129c340: a(n) BlockClosure<br>0xbfc68d08 M [] in SCISqueakTestRunner(SCITestRun<wbr>ner)>runCase: 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68d24 M Time class>millisecondsToRun: 0x1a10700: a(n) Time class<br>0xbfc68d40 M SmalltalkCI class>timeToRun: 0x3afeee8: a(n) SmalltalkCI class<br>0xbfc68d64 M SCISqueakTestRunner(SCITestRun<wbr>ner)>runCase: 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68d80 M MCMethodDefinitionTest(TestCas<wbr>e)>run: 0x4049e20: a(n) MCMethodDefinitionTest<br>0xbfc68d9c M [] in SCISqueakTestRunner(SCITestRun<wbr>ner)>runAll 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68dbc M OrderedCollection>do: 0x401f7f0: a(n) OrderedCollection<br>0xbfc68de0 I SCISqueakTestRunner(SCITestRun<wbr>ner)>runAll 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68df8 M [] in SCISqueakTestRunner(SCITestRun<wbr>ner)>run 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68e1c I Time class>millisecondsToRun: 0x1a10700: a(n) Time class<br>0xbfc68e40 I SmalltalkCI class>timeToRun: 0x3afeee8: a(n) SmalltalkCI class<br>0xbfc68e5c M [] in SCISqueakTestRunner(SCITestRun<wbr>ner)>run 0x4050a68: a(n) SCISqueakTestRunner<br>0xbfc68e7c M BlockClosure>ensure: 0x4050b80: a(n) BlockClosure<br> 0x4050c10 s SCISqueakTestRunner(SCITestRun<wbr>ner)>run<br> 0x41492c8 s SCISqueakTestRunner class(SCITestRunner class)>runSuite:spec:<br> 0x401e3f0 s SCISqueakTestRunner class(SCITestRunner class)>runClasses:spec:<br> 0x4040da0 s SCISqueakTestRunner class(SCITestRunner class)>runSpec:<br> 0x4148790 s SmalltalkCISqueak(SmalltalkCI)<wbr>>runTests<br> 0x414a428 s [] in SmalltalkCISqueak(SmalltalkCI)<wbr>>basicTest<br> 0x3bab9b0 s SmalltalkCISqueak class(SmalltalkCI class)>run:spec:in:<br> 0x401e4c0 s [] in SmalltalkCISqueak(SmalltalkCI)<wbr>>basicTest<br> 0x4040e00 s [] in SmalltalkCISqueak class(SmalltalkCI class)>fold:on:block:<br> 0x41487f0 s Time class>millisecondsToRun:<br> 0x414a488 s SmalltalkCI class>timeToRun:<br> 0x401e560 s SmalltalkCISqueak class(SmalltalkCI class)>fold:on:block:<br> 0x4040e60 s SmalltalkCISqueak class(SmalltalkCI class)>fold:block:<br> 0x4148850 s SmalltalkCISqueak class(SmalltalkCI class)>stage:id:block:<br> 0x401e5c0 s SmalltalkCISqueak(SmalltalkCI)<wbr>>basicTest<br> 0x401e620 s [] in SmalltalkCISqueak(SmalltalkCI)<wbr>>test<br> 0x401da40 s BlockClosure>on:do:<br> 0x401dae0 s [] in SmalltalkCISqueak(SmalltalkCI)<wbr>>test<br> 0x4040bc0 s [] in SmalltalkCISqueak class(SmalltalkCI class)>withBuildStatusReportin<wbr>gDo:<br> 0x401db70 s BlockClosure>on:do:<br> 0x401dbe8 s SmalltalkCISqueak class(SmalltalkCI class)>withBuildStatusReportin<wbr>gDo:<br> 0x401dc48 s SmalltalkCISqueak(SmalltalkCI)<wbr>>test<br> 0x4040c20 s SmalltalkCI class>test:projectDirectory:<br> 0x41486d0 s SmalltalkCI class>test:<br> 0x401dd48 s UndefinedObject>DoIt<br> 0x401de88 s Compiler>evaluateCue:ifFail:<br> 0x401df20 s Compiler>evaluateCue:ifFail:lo<wbr>gged:<br> 0x4040c80 s Compiler>evaluate:in:to:notify<wbr>ing:ifFail:logged:<br> 0x401e178 s Compiler class>evaluate:for:notifying:l<wbr>ogged:<br> 0x4040ce0 s Compiler class>evaluate:for:logged:<br> 0x4148730 s Compiler class>evaluate:logged:<br> 0x414a3c8 s [] in ReadStream(PositionableStream)<wbr>>fileInAnnouncing:<br> 0x401e1f0 s BlockClosure>on:do:<br> 0x401e268 s [] in ReadStream(PositionableStream)<wbr>>fileInAnnouncing:<br> 0x4040d40 s [] in MorphicUIManager>displayProgre<wbr>ss:at:from:to:during:<br> 0x401e2e8 s BlockClosure>on:do:<br> 0x401e360 s [] in MorphicUIManager>displayProgre<wbr>ss:at:from:to:during:<br> 0x401d240 s BlockClosure>ensure:<br> 0x401d2f0 s MorphicUIManager>displayProgre<wbr>ss:at:from:to:during:<br> 0x40409e0 s ProgressInitiationException>de<wbr>faultResumeValue<br> 0x41484f0 s ProgressInitiationException(Ex<wbr>ception)>resume<br> 0x414a248 s ProgressInitiationException>de<wbr>faultAction<br> 0x3bab890 s UndefinedObject>handleSignal:<br> 0x401d3b8 s ProgressInitiationException(Ex<wbr>ception)>signal<br> 0x401d418 s ProgressInitiationException>di<wbr>splay:at:from:to:during:<br> 0x4040a40 s ProgressInitiationException class>display:at:from:to:durin<wbr>g:<br> 0x4148550 s ByteString(String)>displayProg<wbr>ressAt:from:to:during:<br> 0x414a2a8 s ByteString(String)>displayProg<wbr>ressFrom:to:during:<br> 0x401d4a0 s ReadStream(PositionableStream)<wbr>>fileInAnnouncing:<br> 0x4040aa0 s ReadStream(PositionableStream)<wbr>>fileIn<br> 0x41485b0 s CodeLoader>installSourceFile:<br> 0x414a308 s [] in CodeLoader>installSourceFiles<br> 0x3bab8f0 s Array(SequenceableCollection)><wbr>do:<br> 0x401d780 s CodeLoader>installSourceFiles<br> 0x401d930 s ProjectLauncher>startUpAfterLo<wbr>gin<br> 0x4040b00 s ProjectLauncher>startUp<br> 0x4148610 s [] in AutoStart class>startUp:<br> 0x414a368 s WorldState>runStepMethodsIn:<br> 0x3bab950 s PasteUpMorph>runStepMethods<br> 0x401d9c8 s WorldState>doOneCycleNowFor:<br> 0x4040b60 s WorldState>doOneCycleFor:<br> 0x4148670 s PasteUpMorph>doOneCycle<br> 0x1e09b00 s [] in MorphicProject>spawnNewProcess<br> 0x1ad4dd8 s [] in BlockClosure>newProcess<br><br></div>It' like MCMethodDefinitionTest>tearDow<wbr>n never finish (or is very very long) because MCMockPackageInfo(PackageInfo)<wbr>>overriddenMethods is very very long.<br><br></div>I don't know what is different on linux32x86 VM compared to OSX, but it would be interesting to understand what's going on exactly...<br></div>
</blockquote></div></div>
<br></div></div></blockquote></div><br></div></div></div></div></div></div></div></div></div></div></div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>