7615 Tools minor always 03-15-11 22:04 12-27-18 20:54 FrankShearar normal new none none trunk open 0 FileContentsBrowser>>changeMessageCategories: broken I wrote a test for FileContentsBrowser>>changeMessageCategories: but to my surprise I get a DNU: FileContentsBrowser doesn't understand #unlock.

I have three implementors of #unlock in my (trunk) image, namely,
* Morph>>unlock
* SystemWindowButton>>unlock
* View>>unlock

Of course, a FileContentsBrowser is a Browser is a CodeHolder is a... none of these.
Patrickr 12-27-18 20:54 There is no call to #lock anywhere in the class. This looks like an oversight and I deleted the call to unlock. I do not see how this could affect the functionality of the browser.
7874 Connectors major always 10-17-18 07:56 11-12-18 09:57 timkack normal new none none open 0 Cannot install Connectors in 5.2 The release for Connectors 5.2 doesn't load in a 5.2 image:

(Installer repository: 'http://www.squeaksource.com/Connectors') [^] install: 'CGPrereqs-nk.8';
         install: 'FSM-mt.47';
         install: 'Connectors-cmm.210';
         install: 'ConnectorsText-cmm.17';
         install: 'ConnectorsShapes-cmm.33';
         install: 'ConnectorsTools-cmm.24';
         install: 'ConnectorsGraphLayout-cmm.8';
         install: 'BroomMorphs-Base-cmm.4';
         install: 'BroomMorphs-Connectors-nk.2';
         install: 'ConnectorsDemo-cmm.6';
         install: 'ConnectorsBasicDistro-cmm.15'

It seems that 'BroomMorphs-Base-cmm.4' is missing from http://www.squeaksource.com/Connectors. [^]
timkack 11-12-18 09:57 This is no longer an issue 'BroomMorphs-Base-cmm.4' is loaded properly.
7873 any minor always 10-05-18 08:00 10-05-18 08:00 Patrickr normal new none none open 0 Browser spawning crashes in HelpBrowser How to reproduce:
1. Open the release notes in the HelpBrowser
2. Select a class name and press (CMD+O)
7872 any minor always 09-25-18 12:41 09-25-18 13:27 Patrickr normal new none none open 0 PolygonMorph>>intersects: uses a non-existant method Justus Eilers pointed out to me that PolygonMorph>>intersects: calls #intersectsLineFrom:to: which does not exist anywhere in the image. We looked it up in older images (up to 3.8) and could not find it in these either. The method seems to have never existed. Justus wrote the two attached test cases triggering that issue. IntersectsTests.1.cs (1 KB) 01-01-70 00:33
IntersectsImplementation.1.cs (1 KB) 01-01-70 00:33
Patrickr 09-25-18 13:27 I have also attached a possible solution. The perfect solution would use Line objects but we do not have a class for that currently. Thus I resorted to arrays of points and a copied algorithm from the LineIntersections class. For the next release this should be cleaned up.
7871 any minor always 07-17-18 11:13 07-17-18 11:15 edgardec normal new none none open 0 Bug in FileChooser Create file aaa(2).gcode, then DoIt: 'FileChooser example1', then open aaa(2).gcode, there is an error: 'aaa.gcode does not exist' now FileChooser try to open aaa.gcode, the problem is in FileList>>fileNameFromFormattedItem:
edgardec 07-17-18 11:15 Reported by Javier Diaz-Reinoso <javier_diaz_r@mac.com>
7870 VM crash always 04-10-18 11:55 06-13-18 00:49 timkack lewis normal acknowledged none none 5.0 open 0 GC on save image or manual GC crashes image I have a fairly large image (~ 2800 Mb) and suddenly I cannot save the image anymore.
If I manually run garbage collection, it seems to trigger the same, markAndTrace, function causing a SIGSEGV.
I cannot reproduce with a clean image, unfortunately.
See attached crash.dmp.
Running on macOS 10.12.6 (16G1212, 32 GB memory. crash.dmp (33 KB) 01-01-70 00:33
lewis 04-10-18 15:25 I fear you may have hit a limit within the 32-bit VM. I cannot offer specific advice, but if you are able to ask on either vm-dev or squeak-dev lists, someone may be able to help. Based on past experience with other VMs, it may sometimes be possible to work around the condition by opening your image with a different VM (maybe the stack version for example), or by running it on a different platform (Linux or Windows). I do not know if that would help in this case but it may be worth a try.
timkack 04-26-18 10:55 But this is a 64 bit VM:

/Applications/Squeak.app/Contents/MacOS/Squeak: Mach-O 64-bit executable x86_64
I have been using squeak.cog.spur_macos64x64_<date>.dmg distributions since last summer. (Together with the 64 bit images).
I have since rebuilt the image and loaded everything from Monticello.
But, it is a good advise to use stack vm - I'll try that.
lewis 06-13-18 00:49 Tim, if you are still having this problem, can you please open an issue on the opensmalltalk-vm issue tracker list at https://github.com/OpenSmalltalk/opensmalltalk-vm/issues [^] (and/or raise a question on the vm-dev list)? Other people on the vm-dev list may be able to offer advice, and if it is a VM bug it can be addressed on the github issue tracker. Thanks
7847 OS-Mac crash always 02-21-16 16:50 06-12-18 20:02 comutt normal resolved none none 5.0 fixed 0 Cmd+Shift+Cursor crashes Squeak Squeak always crashes if Cmd+Shift+Cursor has been hit.
bp 10-14-16 15:55 I cannot reproduce it on the latest VM cog_macos32x86_squeak.cog.spur_201610132235 on macOS Sierra 10.12 (16A323). Does it still happen for you? If yes, for which VM on which OS version?
nicolas cellier 04-06-18 19:29 I presume that this may have been related to
https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/141 [^]
In which case it has been resolved.

Could you retry with pre-release VM from
https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201804030952 [^]
and report?
timj 06-09-18 17:59 Cannot reproduce in this configuration:
latest update: #18062
Current Change Set: Unnamed1
Image format 68021 (64 bit)
Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.2401] 5.0.201806080613
Mac OS X built on Jun 9 2018 10:17:33 PDT Compiler: 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)
platform sources revision VM: 201806080613
nicolas cellier 06-12-18 20:02 It seems to be resolved: cannot reproduce with to date Opensmalltalk VM version.
7835 VM major always 09-27-15 16:40 04-06-18 22:58 lewis lewis normal confirmed none none fixed 0 vm-sound-NAS needs updates for 64 bit This Unix VM sound driver has compile errors on 64-bit host, needs updates to platforms/unix/vm-sound-NAS/sqUnixSoundNAS.c

Reported by Ken Dickey on vm-dev http://lists.squeakfoundation.org/pipermail/vm-dev/2015-September/019470.html [^]
nicolas cellier 04-06-18 22:58 I don't know if it has compile errors, but current version does pretty bad things...

line 524: static sqInt sound_RecordSamplesIntoAtLength(int buf, int startSliceIndex,
line 557: (char *) (buf + startSliceIndex*sliceSize),

Making a pointer out of an int hasn't been correct since maybe Kernighan and Ritchie...

https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/platforms/unix/vm-sound-NAS/sqUnixSoundNAS.c [^]
7843 Graphics minor always 12-08-15 13:18 04-06-18 22:38 TimNN normal resolved none none 5.0 fixed 0 MatrixTransform2x3>>isPureTranslation incorrect Fallback implementation The fallback implementation of MatrixTransform2x3>>isPureTranslation is incorrect. It should compare a21 = 0.0 a22 = 1.0 and not the other way around.
nicolas cellier 04-06-18 22:38 Good catch!
This is now fixed in
http://source.squeak.org/trunk/Graphics-nice.396.diff [^]
7856 Any minor always 08-30-16 07:13 04-06-18 22:30 hatsevich KenCausey normal resolved none none fixed 0 Small bugs in Preference Wizard 1) "Fast drag and resize": it is unchecked while behaves like it is checked, and vice versa
2) "Filterable lists and trees" - annotation is mistakenly taken from the following option ("Filters clear if unfocused")
nicolas cellier 04-06-18 22:30 Thanks for reporting.
Both seem fixed in current trunk
1) Fast drag and resize behaves as expected, whether enabled or not
2) There is no more "Filterable lists and trees" options, and the remaining "Filterable *" have correct description.
7854 Any minor always 08-09-16 07:49 04-06-18 21:47 drattpresse KenCausey normal resolved none none 5.0 fixed 0 Typos Preference Browser -> Files category:

  It true, then the contents of stdin
  -> s/^It/If

Preference Browser -> Morphic category:

  Menu request updates list/tree selection
  When invoking a menu, this will for current selection by default.
  -> will - what? a word's missing?

Font import, confirmation dialog:
  This is at least x MB of space required int the image.
  -> s/ int / in /

nicolas cellier 04-06-18 21:47 Thanks!
This has been resolved in trunk
http://source.squeak.org/trunk/Morphic-nice.1412.diff [^]
http://source.squeak.org/trunk/Files-nice.180.diff [^]

If you want to learn to, it's possible to correct by yourself and commit into http://source.squeak.org/inbox [^] with Metacello tool.
This generally results in faster integration, and retains your authorship on the modification.
7864 Multilingual minor always 11-14-16 09:59 04-06-18 20:36 sumi normal feedback none none trunk open 0 [BUG][FIX] some methods required for the Japanese locale to function properly is missing JapaneseEnvironment class lacks some method to work. This change-set supplements what is missing and also fixing some bugs. fixJapaneseLocale-sumim.1.cs.gz (1 KB) 01-01-70 00:33
fixJapaneseLocale-sumim.2.cs.gz (1 KB) 01-01-70 00:33
nicolas cellier 04-06-18 17:33 Hi sumim, thanks for the report and patch!
I'm in the process of integrating your fixes.
I want to understand why the changes of crossedX are necessary, because the case of no space and no other breakable character should normally be handled in ^self wrapHere. Do you remember or have a test case showing the problem?
nicolas cellier 04-06-18 17:40 Now partly in trunk (but crossedX)
http://source.squeak.org/trunk/Multilingual-nice.237.diff [^]

Waiting for feedback concerning crossedX
7859 Any minor always 09-11-16 09:18 04-06-18 19:54 dram KenCausey normal resolved none none trunk fixed 0 MNU: UndefinedObject>>do: Click "objects (o)" in World menu will trigger a "MNU: UndefinedObject>>do:" error.

It is found in Squeak6.0alpha #16713.
7858 Any minor always 09-11-16 08:27 04-06-18 19:41 dram KenCausey normal resolved none none trunk fixed 0 MNU: Preferences class>>roundedWindowCorners When open the halo menu for a window, click the debug icon, and then click "viewer for Morph", a "MNU: Preferencecs class>>roundedWindowCorners" error is triggerd.

It's found in Squeak6.0alpha #16713.
dram 09-14-16 01:02 I think this problem is solved by Bert Freudenberg, see http://lists.squeakfoundation.org/pipermail/squeak-dev/2016-September/191855.html. [^]

Although there are several depercation warnings.
7868 MVC minor always 12-10-17 16:08 04-06-18 15:41 jr normal confirmed none none trunk open 0 ChangeSet menu in ChangeSorter will not open in MVC project The context menu for change sets will not open in an MVC project because the method #monticelloChangeSetMenu: is registered via pragma as a menu handler and it assumes to run in a Morphic project. I think it should be dispatched with the current project instead or at least be guarded.

I would post the full stack trace, but I cannot find how to copy the trace from a debugger in MVC...

MessageNotUnderstood: CustomMenu>>submorphs
7866 OS-Linux crash always 04-25-17 10:54 04-06-18 11:58 007 normal feedback none none 5.0 open 0 crash during object initialization Calling Object>>error: during object initialization and together having two
instance variable defined (var2 Size) - results to crash

tst:=TestCrash new: 1."

When removing instance variable "var2" and than call "TestCrash(Object)>>error:" inside "TestCrash>>init:" by standard object initialization, it pass correct with standard error message "testerror".

Object thats result to crash is in attached file TestCrash.st

Crashes on Linux in versions Squeak-5.0-All-in-One.zip, Squeak5.1-16548-32bit-All-in-One.zip, Squeak5.1-16549-32bit-All-in-One.zip
Working correct on Squeak-4.6-All-in-One.zip
avid@localhost ~/TestCrash $ ./squeak.sh
Using /home/david/TestCrash/Squeak5.1-16549-32bit-All-in-One.app/Contents/Linux-i686/bin/squeak...

Segmentation fault Tue Apr 25 12:25:46 2017

Squeak VM version: 5.0-201608171728 Wed Aug 17 18:36:04 UTC 2016 gcc 4.6.3 [Production Spur VM]
Built from: CoInterpreter VMMaker.oscog-cb.1919 uuid: 00a8dd2a-bc8d-4552-b400-be781c8aabec Aug 17 2016
With: StackToRegisterMappingCogit VMMaker.oscog-cb.1919 uuid: 00a8dd2a-bc8d-4552-b400-be781c8aabec Aug 17 2016
Revision: VM: 201608171728 https://github.com/OpenSmalltalk/opensmalltalk-vm.git [^] $ Date: Wed Aug 17 10:28:01 2016 -0700 $
Plugins: 201608171728 https://github.com/OpenSmalltalk/opensmalltalk-vm.git [^] $
Build host: Linux testing-worker-linux-docker-7e600486-3433-linux-13 3.13.0-40-generic 0000069-Ubuntu SMP Thu Nov 13 17:53:56 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /home/david/TestCrash/Squeak5.1-16549-32bit-All-in-One.app/Contents/Linux-i686/bin/../lib/squeak/5.0-201608171728 [default: /home/david/TestCrash/Squeak5.1-16549-32bit-All-in-One.app/Contents/Linux-i686/lib/squeak/5.0-201608171728/]

C stack backtrace & registers:
        eax 0xbf832e64 ebx 0xbf832d80 ecx 0xbf832e18 edx 0xbf832dcc
        edi 0xbf832c50 esi 0xbf832c50 ebp 0xbf832ce8 esp 0xbf832d34
        eip 0xbf832f48

Smalltalk stack dump:
0xbf83bd38 M [] in TestCrash(Object)>longPrintOn:limitedTo:indent: 0xa514340: a(n) TestCrash
0xbf83bd60 M Array(SequenceableCollection)>withIndexDo: 0xa52f028: a(n) Array
0xbf83bd7c M Array(SequenceableCollection)>doWithIndex: 0xa52f028: a(n) Array
0xbf83bda0 I TestCrash(Object)>longPrintOn:limitedTo:indent: 0xa514340: a(n) TestCrash
0xbf83bdc8 M [] in MethodContext>printDetails: 0xa5145d0: a(n) MethodContext
0xbf83bde4 M BlockClosure>on:do: 0xa52ef58: a(n) BlockClosure
0xbf83be04 M BlockClosure>ifError: 0xa52ef58: a(n) BlockClosure
0xbf83be34 I MethodContext>printDetails: 0xa5145d0: a(n) MethodContext
0xbf83be64 I MethodContext(ContextPart)>errorReportOn: 0xa5145d0: a(n) MethodContext
0xbf83be8c I SmalltalkImage>logError:inContext:to: 0xabfcc50: a(n) SmalltalkImage
0xbf83beb8 I SmalltalkImage>logSqueakError:inContext: 0xabfcc50: a(n) SmalltalkImage
0xbf83eb74 M [] in Debugger class>morphicOpenOn:context:label:contents:fullView: 0xadb88d8: a(n) Debugger class
0xbf83eb90 M BlockClosure>on:do: 0xa514cd0: a(n) BlockClosure
0xbf83ebb8 M Debugger class>morphicOpenOn:context:label:contents:fullView: 0xadb88d8: a(n) Debugger class
0xbf83ebf0 I MorphicProject(Project)>dispatchTo:addPrefixAndSend:withArguments: 0xb88a268: a(n) MorphicProject
0xbf83ec1c I Debugger class>openOn:context:label:contents:fullView: 0xadb88d8: a(n) Debugger class
0xbf83ec50 I StandardToolSet class>debug:context:label:contents:fullView: 0xabd4200: a(n) StandardToolSet class
0xbf83ec84 I ToolSet class>debug:context:label:contents:fullView: 0xabcf7f8: a(n) ToolSet class
0xbf83ecbc I Process>debug:title:full: 0xaaddd98: a(n) Process
0xbf83ece8 I Process>debug:title: 0xaaddd98: a(n) Process
0xbf83ed10 I StandardToolSet class>debugError: 0xabd4200: a(n) StandardToolSet class
0xbf83ed38 I ToolSet class>debugError: 0xabcf7f8: a(n) ToolSet class
0xbf83ed5c I UnhandledError>defaultAction 0xa514490: a(n) UnhandledError
0xbf83ed78 M UndefinedObject>handleSignal: 0xa875b00: a(n) UndefinedObject
0xbf83ed9c M MethodContext(ContextPart)>handleSignal: 0xa514430: a(n) MethodContext
0xbf83edc0 I UnhandledError(Exception)>signal 0xa514490: a(n) UnhandledError
0xbf83ede0 I UnhandledError class>signalForException: 0xabd0950: a(n) UnhandledError class
0xbf83ee04 I Error>defaultAction 0xa514350: a(n) Error
0xbf83ee28 I UndefinedObject>handleSignal: 0xa875b00: a(n) UndefinedObject
0xbf83ee54 I MethodContext(ContextPart)>handleSignal: 0xa514430: a(n) MethodContext
0xbf83ee78 I Error(Exception)>signal 0xa514350: a(n) Error
0xbf83ee98 I Error(Exception)>signal: 0xa514350: a(n) Error
0xbf83eebc I TestCrash(Object)>error: 0xa514340: a(n) TestCrash
0xbf83dc88 I TestCrash>init: 0xa514340: a(n) TestCrash
0xbf83dcac I TestCrash class>new: 0xa2096d8: a(n) TestCrash class
0xbf83dccc M UndefinedObject>(nil) 0xa875b00: a(n) UndefinedObject
0xbf83dcf8 I Compiler>evaluateCue:ifFail: 0xa48cc30: a(n) Compiler
0xbf83dd24 I Compiler>evaluateCue:ifFail:logged: 0xa48cc30: a(n) Compiler
0xbf83dd54 I Compiler>evaluate:in:to:notifying:ifFail:logged: 0xa48cc30: a(n) Compiler
0xbf83dd8c M [] in SmalltalkEditor(TextEditor)>evaluateSelectionAndDo: 0xa20a3d0: a(n) SmalltalkEditor
0xbf83dda8 M BlockClosure>on:do: 0xa48cbf8: a(n) BlockClosure
0xbf83dddc I SmalltalkEditor(TextEditor)>evaluateSelectionAndDo: 0xa20a3d0: a(n) SmalltalkEditor
0xbf83de00 I SmalltalkEditor(TextEditor)>evaluateSelection 0xa20a3d0: a(n) SmalltalkEditor
0xbf83de18 M [] in PluggableTextMorphPlus(PluggableTextMorph)>doIt 0xa2092d0: a(n) PluggableTextMorphPlus
0xbf83de3c I TextMorphForEditView(TextMorph)>handleEdit: 0xa209238: a(n) TextMorphForEditView
0xbf83de64 I PluggableTextMorphPlus(PluggableTextMorph)>handleEdit: 0xa2092d0: a(n) PluggableTextMorphPlus
0xbf83de80 M PluggableTextMorphPlus(PluggableTextMorph)>doIt 0xa2092d0: a(n) PluggableTextMorphPlus
0xbf83de98 M Workspace(StringHolder)>perform:orSendTo: 0xa208ff8: a(n) Workspace
0xbf83dec0 M [] in MenuItemMorph>invokeWithEvent: 0xa233848: a(n) MenuItemMorph
0xbf839b5c M BlockClosure>ensure: 0xa48ae30: a(n) BlockClosure
0xbf839b7c M CursorWithMask(Cursor)>showWhile: 0xab671e8: a(n) CursorWithMask
0xbf839b9c M MenuItemMorph>invokeWithEvent: 0xa233848: a(n) MenuItemMorph
0xbf839bc0 I MenuItemMorph>mouseUp: 0xa233848: a(n) MenuItemMorph
0xbf839be4 I MenuItemMorph>handleMouseUp: 0xa233848: a(n) MenuItemMorph
0xbf839c00 M MouseButtonEvent>sentTo: 0xa481310: a(n) MouseButtonEvent
0xbf839c20 M MenuItemMorph(Morph)>handleEvent: 0xa233848: a(n) MenuItemMorph
0xbf839c44 M MorphicEventDispatcher>dispatchEvent:withHandler:withMorph: 0xa480840: a(n) MorphicEventDispatcher
0xbf839c68 M MorphicEventDispatcher>dispatchDefault:with: 0xa480840: a(n) MorphicEventDispatcher
0xbf839c88 M MorphicEventDispatcher>dispatchEvent:with: 0xa480840: a(n) MorphicEventDispatcher
0xbf839cac M MenuItemMorph(Morph)>processEvent:using: 0xa233848: a(n) MenuItemMorph
0xbf839cd8 M [] in MorphicEventDispatcher>dispatchEvent:toSubmorphsOf: 0xa480840: a(n) MorphicEventDispatcher
0xbf839cfc M Array(SequenceableCollection)>do: 0xa209ba8: a(n) Array
0xbf839d18 M MenuMorph(Morph)>submorphsDo: 0xa204948: a(n) MenuMorph
0xbf839d38 M MorphicEventDispatcher>dispatchEvent:toSubmorphsOf: 0xa480840: a(n) MorphicEventDispatcher
0xbf839d60 M MorphicEventDispatcher>dispatchEvent:withHandler:withMorph: 0xa480840: a(n) MorphicEventDispatcher
0xbf839d84 M MorphicEventDispatcher>dispatchDefault:with: 0xa480840: a(n) MorphicEventDispatcher
0xbf839da4 M MorphicEventDispatcher>dispatchEvent:with: 0xa480840: a(n) MorphicEventDispatcher
0xbf839dc8 M MenuMorph(Morph)>processEvent:using: 0xa204948: a(n) MenuMorph
0xbf839df0 M MorphicEventDispatcher>doProcessingForFocusEvent:with: 0xa480840: a(n) MorphicEventDispatcher
0xbf839e14 M MorphicEventDispatcher>dispatchFocusEventFully:with: 0xa480840: a(n) MorphicEventDispatcher
0xbf839e34 M MenuMorph>processFocusEvent:using: 0xa204948: a(n) MenuMorph
0xbf839e54 M MenuMorph(Morph)>processFocusEvent: 0xa204948: a(n) MenuMorph
0xbf839e7c M [] in HandMorph>sendFocusEvent:to:clear: 0xb9ebe68: a(n) HandMorph
0xbf839e9c M BlockClosure>ensure: 0xa4807a8: a(n) BlockClosure
0xbf839ebc M MouseButtonEvent(MorphicEvent)>becomeActiveDuring: 0xa4803e0: a(n) MouseButtonEvent
0xbf83ac8c M [] in HandMorph>sendFocusEvent:to:clear: 0xb9ebe68: a(n) HandMorph
0xbf83acac M BlockClosure>ensure: 0xa4806b0: a(n) BlockClosure
0xbf83accc M HandMorph>becomeActiveDuring: 0xb9ebe68: a(n) HandMorph
0xbf83acf4 M [] in HandMorph>sendFocusEvent:to:clear: 0xb9ebe68: a(n) HandMorph
0xbf83ad14 M BlockClosure>ensure: 0xa4805b8: a(n) BlockClosure
0xbf83ad34 M PasteUpMorph>becomeActiveDuring: 0xacf8780: a(n) PasteUpMorph
0xbf83ad58 M HandMorph>sendFocusEvent:to:clear: 0xb9ebe68: a(n) HandMorph
0xbf83ad84 M HandMorph>sendEvent:focus:clear: 0xb9ebe68: a(n) HandMorph
0xbf83ada8 M HandMorph>sendMouseEvent: 0xb9ebe68: a(n) HandMorph
0xbf83adc8 M HandMorph>handleEvent: 0xb9ebe68: a(n) HandMorph
0xbf83adf4 M HandMorph>processEvents 0xb9ebe68: a(n) HandMorph
0xbf83ae10 M [] in WorldState>doOneCycleNowFor: 0xb73ba70: a(n) WorldState
0xbf83ae34 M Array(SequenceableCollection)>do: 0xa88fa10: a(n) Array
0xbf83ae50 M WorldState>handsDo: 0xb73ba70: a(n) WorldState
0xbf83ae70 M WorldState>doOneCycleNowFor: 0xb73ba70: a(n) WorldState
0xbf83ae8c M WorldState>doOneCycleFor: 0xb73ba70: a(n) WorldState
0xbf83aea8 M PasteUpMorph>doOneCycle 0xacf8780: a(n) PasteUpMorph
0xbf83aec0 M [] in MorphicProject>spawnNewProcess 0xb88a268: a(n) MorphicProject
 0xac86208 s [] in BlockClosure>newProcess

Most recent primitives

stack page bytes 4096 available headroom 2788 minimum unused headroom 3012

        (Segmentation fault)
Neúspěšně ukončen (SIGABRT)
TestCrash.st (1 KB) 01-01-70 00:33
nicolas cellier 04-06-18 11:58 Can't reproduce with latest (pre-release) VM from
https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/201804030952 [^]
Could you load such VM and retry?
7863 Morphic minor always 11-14-16 09:35 04-06-18 10:22 sumi normal resolved none none trunk fixed 0 [BUG][FIX] can't undo paste initials (alt/cmd + shift + v) t/o fixPasteInitialsUndo-sumim.1.cs.gz (0 KB) 01-01-70 00:33
nicolas cellier 04-06-18 10:22 Just added a fix in trunk
http://source.squeak.org/trunk/Morphic-nice.1411.diff [^]
7861 MVC major always 09-25-16 09:04 04-06-18 10:01 davidf normal resolved none none trunk fixed 0 Can't debug In an MVC project when pressing 'debug', we get the error

MessageNotUnderstood: UndefinedObject>>windowColorToUse

The error is caused by the method setDefaultBackgroundColor attempting to
send the message windowColorToUse to a nil model.

I have changed the implementation of View>>setDefaultBackgroundColor to

model == nil ifFalse:[self model windowColorToUse].

And this seems to fix the problem, as I now get the debugger window and everything appears to work as it should.

How to reproduce:

Open a new MVC project, open a workspace and do 2/0. When the notifier comes up select 'debug'.

nicolas cellier 04-06-18 10:00 Can't reproduce in current Squeak trunk, appeared to be fixed
7775 OS-Linux major always 06-25-13 18:05 10-20-17 22:21 tim high new none none 4.4 open 0 unix midiplugin cannot play standard instruments via ALSA midi connection The MIDI plugin is expected to be able to play sounds using the standard MIDI instrument list; on unix with ALSA sound drivers (i.e. on the Raspberry Pi in this case) this seems not to work. Apparently this has been a problem for some time since the Scratch code using it has been commented out since 2009.
The result is that a lot of sounds are very sub-par for the users of Scratch on any unix platform and of course the Pi. This is a pity, since it gives a very poor impression.
After gazing at the unix midi code I had to conclude that it didn't look like it could work at all, but what do I know? At the simplest level, querying the number of ports seems to give an answer that classes with related functions that get passed a port number. Compare, for example, sqMIDIGetPortCount and sqMIDIGetPortDirectionality sqUnixMIDIALSA.inc (18 KB) 01-01-70 00:33
travm1 04-07-17 05:53 More info about ALSA here: https://www.everipedia.com/Advanced_Linux_Sound_Architecture/ [^]
thalamus 10-20-17 18:29 awesome, thanks travm1

http://www.thalamus.co [^]
tim 10-20-17 22:21 Oh my, I'd forgotten about this; long time ago.
The problem was actually 'fixed' a couple of years ago by someone (and I can't find any trace of the name, but Yoshiki might recall since it is one of the Japanese squeakers) who wrote a shell scfript to install Timidity and soundfonts.

It works, but Timidity seems to have a resource leak since it gradually takes more and more cpu%. There are timing issues as well, with the HDMI sound being particularly strange.

The script on the Pi is /usr/share/scratch/timidityinstall.sh
7867 Installer crash always 09-25-17 19:52 09-25-17 19:52 paul normal new none none trunk open 0 Unable to start from directory named with spacing Running squeak.sh by double-click from Nemo (file browser) of LinuxMint opens Error dialog:
This Squeak version does not support Linux-.

The terminal shows the error message:
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.

Answering the error dialog opens an image file selection dialog. The image can't be launched by selection either (this is a deeper bug).

If however squeak is launched typing "./squeak.sh" from a terminal then the image can start fine. Note that I've already applied the upgraded priority fix that also gives the GtkDialog error, this is a different cause. If the squeak directory is moved back to /home/user/Downloads then the launch icon works fine again. The significant difference is spacing found in the directory name.
If this is a squeak bug then it is in the VM. Searches find that others have also been struggling with the GtkDialog error for years with other applications and may not know this simple cause. My drive partition was called "256 GB SSD" and mounted as "/media/user/256 GB SSD/". The problems went away entirely by naming the partition without spacing. I've also confirmed that simply having a parent directory containing a space in the name will cause the problem and that a soft link to a name without spacing can be used as a workaround. The script file squeak.sh does not appear to have the bug, it is at a deeper level like perhaps a framework used by the VM or perhaps how the VM uses that framework.
4665 major always 08-30-06 07:08 09-01-17 05:45 ernst krono normal resolved none none fixed 0 PositionableStream>>upToAll: does return string including part of delimiter I have an bug with parsing HTML while using upToAll: .

On a MultiByteFileStream
upToAll: '<' gives ' VÃ?RONIQUE
    which makes no sense.
I did this on Linux fedora core 5 64-bit, Squeak 3.8
UpToAllTest.st (1 KB) 01-01-70 00:33
tonyg 02-23-17 19:16 Diagnosis: Stream positions reflect a count of bytes in MultiByteFileStream, and PositionableStream upToAll: calls next: with a count of bytes. However, MultiByteFileStream's next: expects a count of characters.

Test cases: http://source.squeak.org/inbox/MultilingualTests-tonyg.22.mcz [^]
First half of proposed fix: http://source.squeak.org/inbox/Collections-tonyg.734.mcz [^]
Second half of proposed fix: http://source.squeak.org/inbox/Multilingual-tonyg.218.mcz [^]
krono 09-01-17 05:45 Resolved with Collections-pre.763
7865 Any crash always 04-05-17 11:58 04-05-17 11:58 pavelmalyshkin KenCausey normal assigned none none trunk open 0 Save project crushes Squeak In a fresh 5.1(32 bit) all in one:
Projects --> save project
Fill in the dialog, save on local disk only -->

"Please choose" dialog appears. Any further way leads to a crush or an environment emergency.
7862 Morphic minor always 11-13-16 07:44 11-13-16 07:44 sumi normal new none none trunk open 0 [BUG][FIX] #querySymbol: (cmd/alt + q) doesn't put caret on the first argument place Considering the use case of "query" feature (code completion invoked by cmd/alt + q), when a selector with multiple keywords is a candidate, the caret should be placed in the first argument insertion part (the first colon-space).

https://www.youtube.com/watch?v=jYOEZVnF9eI [^]

For similar reason, I also tweak the "advance" feature (shift + cmd/alt + a) by which the caret is moved to the next occurrence of the characters colon-space (it is imperceptibly changed to move the caret just after colon but not after colon-space).
fixQuerySymAndArgAdv-sumim.1.cs.gz (1 KB) 01-01-70 00:33
7838 System crash always 11-09-15 21:20 10-16-16 06:38 kurbasov bp normal feedback none none 5.0 open 0 Command "explore it" applied to Object leads to crash of VM. Issuing "explore it" for Object from workspace menu leads to crash of VM. The same thing occurs when evaluating "Object explore" expression by "do it".

Fresh images of Squeak versions 4.6 and 5.0. OS Windows 8.1 64-bit.

It looks like the infinite recursion occurs. UI freezes and memory consumption constantly grows up to 3867.7 MB(!) until VM crash. Then the message displayed:

Fatal VM error
Sorry but VM has crashed
Reason: out of memory
Current byte code: -1
Primitive index: -1

The crash dump process can't complete and VM stops responding to the system. The size of the incomplete dump file is large (about 14 MB) thus I can't attach it.
Nicolai Hess 11-16-15 15:10 Yes, this looks like some recursive data in Objects DependentsFields.

If you change ListItemWrapper
setItem: anObject
        ifNotNil: [:obj | obj removeDependent: self].
    item := anObject.
        ifNotNil: [:obj | obj addDependent: self]
    item := anObject

to :

setItem: anObject

    item := anObject.

every thing works.
Nicolai Hess 11-27-15 09:32 Looks like this is already fixed in trunk.
How can/will this move to an update for the current release?
bp 10-16-16 06:36 I just tried to reproduce this with the official Squeak 5.1 release on Windows 8.1 Pro, and it does work correctly.

However, the proposed fix seems to remove some UI update functionality, doesn't it?
7860 text always 09-13-16 19:32 09-13-16 19:32 timkack normal new none none open 0 Remove the mention about WbSet, WbDictionary from wiki On http://wiki.squeak.org/squeak/2985, [^] there is the following text:
Use WbArray's, WbOrderedCollections, WbSet's and WbDictionary's

For the new Closures, the Array class cannot be made uncompact, which means they cannot use #primitiveChangeClassTo:, which means it cannot be added to the WriteBarrier, which means they end up in Magma's readSet, which means commits will be slower. WbArray is just a subclass of Array which _can_ be compacted. WbOrderedCollection is just an OrderedCollection that uses an internal WbArray instead of an internal Array. Likewise for Dictionary and Set.

Therefore, using these WriteBarrier-capable versions will improve performance.
This was removed as of WriteBarrier-cmm.47.mcz
7857 Tools minor always 09-01-16 17:41 09-01-16 17:41 timkack normal new none none open 0 Remove instructions for OmniBrowser Installing Omnibrowser does not work on Squeak 5.0/5.1
The following snippet should be removed from Help -> Extending the System:
<code smalltalk>
"Including Refactoring engine"
(Installer ss project: 'MetacelloRepository') install: 'ConfigurationOfOmniBrowser'.
((Smalltalk at: #ConfigurationOfOmniBrowser) project perform: #lastVersion) load: #( Dev ).
It should probably be replaced with the instructions on how to add the Refactoring tools:
<code smalltalk>
Installer gemsource
    project: 'metacello';
    addPackage: 'ConfigurationOfMetacello';

((Smalltalk at: #ConfigurationOfMetacello) project
 version: #'previewBootstrap') load.

Installer squeakTrunk
    install: 'SqueakSSL-Core'.

(Smalltalk at: #Metacello) new
    configuration: 'MetacelloPreview';
    version: #stable;
    repository: 'github://dalehenrich/metacello-work:configuration'; [^]

(Smalltalk at: #Metacello) new
    baseline: 'Metacello';
    repository: 'github://dalehenrich/metacello-work:master/repository'; [^]

(Smalltalk at: #Metacello) new
    baseline: 'Metacello';
    repository: 'github://dalehenrich/metacello-work:master/repository'; [^]
    onConflict: [:ex | ex allow];

Preferences removePreferencesFor: MCGitBasedNetworkRepository.

(Smalltalk at: #Metacello) new
    configuration: 'RefactoringTools';
    version: #stable;
7855 minor always 08-25-16 07:53 08-25-16 07:53 timkack normal new none none open 0 Bug tracker needs to be updated This is not regarding www.squeak.org but rather mantis, bugs.squeak.org. Should probable be a project of its own on Mantis...
I am a big fan of keeping bugs in the bug tracker but I see that Squeak 5.0 and 5.1 does not exist for "Product Build:” and "Product Version:”.
Would it be possible to add these?
7853 Any major always 07-22-16 22:22 07-28-16 10:25 TimNN KenCausey normal assigned none none trunk open 0 Files-cmm.159 causes a regression (since #/ returns object of a different class) The following works without issues before `Files-cmm.159`:

((FileDirectory on: '/'))
((FileDirectory on: '/') / 'tmp')
((FileDirectory on: '/') / 'tmp') pathName

Printing each line gives:

UnixFileDirectory on '/'
UnixFileDirectory on '/tmp'

Since `Files-cmm.159` the last line fails, the output is then (with the last line being a signaled error):

UnixFileDirectory on '/'
a DirectoryEntryDirectory tmp
MessageNotUnderstood: DirectoryEntryDirectory>>pathName
TimNN 07-28-16 10:14 This seems to have been fixed by `Files-cmm.161`, so anyone with the privileges feel free to mark this as resolved (I don't seem to be able to do so myself).
TimNN 07-28-16 10:25 I retract my previous statement, this issue has only been fixed if the path (in this case `/tmp`) refers to a directory, if it refers to a file this still fails:

Printing each line for the file case before:

((FileDirectory on: '/tmp')) UnixFileDirectory on '/tmp'
((FileDirectory on: '/tmp') / 'any_file') UnixFileDirectory on '/tmp/any_file'
((FileDirectory on: '/tmp') / 'any_file') pathName '/tmp/any_file'


((FileDirectory on: '/tmp')) UnixFileDirectory on '/tmp'
((FileDirectory on: '/tmp') / 'any_file') a DirectoryEntryFile any_file
((FileDirectory on: '/tmp') / 'any_file') pathName MessageNotUnderstood: DirectoryEntryFile>>pathName
7767 Traits minor always 06-04-13 13:43 07-03-16 04:29 FrankShearar FrankShearar normal resolved none none trunk fixed 0 - does not respect brackets In the composition (S + T) - m, where m is a set of excluded selectors, m is not removed from the TraitComposition (S + T), but only from T.
Patrickr 11-18-15 15:21 Does anyone have a strong opinion on this one? The behavior was intended like that as can be seen in this method:

TraitComposition>>#- anArray
    "the modifier operators #@ and #- bind stronger than +.
    Thus, #@ or #- sent to a sum will only affect the most right summand"
    self addLast: (self removeLast - anArray)

However, this violates the normal evaluation order of Squeak Smalltalk, so I would propose, that we remove this behavior.
FrankShearar 11-18-15 15:29 I asked the Pharo guys (where most of the people who wrote the papers on Traits hang out), and their reply is here: http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2013-June/080155.html [^]

The gist? It's a bug.
Patrickr 11-18-15 15:42 Thanks for the hint :)

So, I am going to change this to the Pharo equivalent but without the comment which is kind of confusing, as the behavior does not look like #- would bind stronger than #+ anymore.

- anArray
    "the modifier operators #@ and #- bind stronger than +"
    self transformations: (self transformations collect: [ :t | t - anArray ])
lewis 07-03-16 04:29 Patrick Rein uploaded a new version of Traits to project The Trunk:
http://source.squeak.org/trunk/Traits-pre.307.mcz [^]
==================== Summary ====================
Name: Traits-pre.307
Author: pre
Time: 20 November 2015, 2:58:26.562 pm
UUID: f0955b2d-775c-4862-85b9-5d6e616cd2e4
Ancestors: Traits-eem.306
This fixes http://bugs.squeak.org/view.php?id=7767 [^] which is about the - and @ operator of Trait compositions ignoring brackets. This implementation uses the
+normal left to right evaluation order of Smalltalk to avoid confusions about the way trait composition expressions are evaluated.
7716 VM minor always 01-12-13 01:00 06-08-16 00:17 lewis lewis normal resolved none none fixed 0 Harvest HostWindowPlugin enhancements from Qwaq/Teleplace (now 3d ICC) As noted by Eliot Miranda:
An additional piece of history is that a number of plugins, including
the HostWindowPlugin, were enhanced at Qwaq/Teleplace (now 3d ICC), in a
cross-platform manner since we supported Mac and Windows initially and
later had a linux prototype. The code for some of these enhanced plugins,
including the HostWindowPlugin, was released along with Cog, which has an
MIT license. So if you mine the COg branch you'll find code that can be
folded back into trunk you'll get the enhanced functionality. For the
Qwaq/Teleplace HostWindowPlugin that included setting the window title,
repositioning and resizing the main window, querying its size, etc.
Discussed here: http://lists.squeakfoundation.org/pipermail/vm-dev/2013-January/011799.html [^]
lewis 06-08-16 00:17 The key enhancements are now in the trunk and oscog VM branches, and the X11 host window support works for the main Squeak display window.
7849 Files major always 03-22-16 02:02 03-22-16 02:02 anonymous90 normal new none none 5.0 open 0 FileDirectory issues with relative UNIX paths in Squeak 5.0 If you evaluate this in Squeak 5.0 on UNIX:
   (FileStream forceNewFileNamed: 'foo.txt') close.
   FileDirectory default directoryEntryFor: './foo.txt'

you get nil. change the './foo.txt' to 'foo.txt', and it works as expected.

A similar error occurs when creating FileDirectories:

   FileDirectory forFileName: './foo.txt'

gives a FileDirectory for the root "/" directory. but replace './foo.txt' with 'foo.txt', and it works.
7848 Tools minor always 03-20-16 22:49 03-20-16 23:01 mva normal new none none 5.0 open 0 In FileList, trying to drag a file that is not previously selected triggers 'Error: subscript is out of bounds: 0' In FileList, trying to drag a file that is not previously selected triggers 'Error: subscript is out of bounds: 0'.

Steps to reproduce:
Open FileList by clicking Tools, FileList.
Select a directory by clicking on the directory name in the directory tree on the left.
In the file list on the right, start dragging a file. You only need to drag it a few pixels and then release the mouse button.
You will get the following error 'Error: subscript is out of bounds: 0'.

FileListDragFile-M7848-mva.1.cs.gz (0 KB) 01-01-70 00:33
mva 03-20-16 23:01 Added a fix for this.
7846 Tools major always 01-29-16 23:26 01-29-16 23:26 Nicolai Hess normal new none none 5.0 open 0 ProcessBrowser wrong syntax highlight and syntax debugger error Open ProcessBrowser
select a process
select a context of this process
the code pane shows the code of this context but the syntax highlighting is
wrong. Most code is black with some red words.

And if you select process "the timer interrupt watcher" and the
context of
Delay class >> runtTimerLoop
a syntax error debugger opens with the following message

"tamp: Argument name expected ->'mt 5/14/2015 18:08' prior: 55090637"
7826 Documentation trivial always 03-17-15 20:25 01-23-16 17:15 faried casey normal assigned none none trunk open 0 incorrect instructions for setting up OCompletion in 4.5 "Extending the system" under "Help" has incorrect instructions for installing OCompletion. The right ones, based on http://rotatef.blogspot.com/2013/02/ocompletion-and-squeak-44.html, [^] are

(Installer ss project: 'OCompletion') install: 'Ocompletion'.
(Installer ss project: 'MetacelloRepository') install: 'ConfigurationOfOCompletion'.

" this might work as well: ... project version: #stable) load."
((Smalltalk at: #ConfigurationOfOCompletion) project version: '1.4.2') load.

(Smalltalk at: #ECToolSet) register.
(Smalltalk at: #ToolSet) default: (Smalltalk at: #ECToolSet).
faried 01-23-16 17:15 By the way, this is still broken. I just followed my own instructions, in the blog post, to install 1.4.3 for 5.0.
5228 VM major always 10-12-06 18:06 12-11-15 03:50 Ron lewis normal resolved none none 3.9 fixed 0 Include Cryptographic Primitives in Base VM - DESPlugin Hans-Martin did some testing and as we expected the performance of pure squeak cryptography is disapointing:

Hans-Martin wrote:
"Ok, I did some measurements. Results are pretty disappointing.
Squeak on my AMD 3800+ processor encrypts 32 KBytes using 3DES CBC mode in about 8 seconds - unusable for anything but a proof-of-concept.
Therefore I think that DES (and maybe some other small cryptographic
primitives) should be part of the base VM."

The DESPlugin is already a part of the VMMaker, I am asking the VM group to please include the DESPlugin in the base VM that is distrubuted. We will be submitting more code and will follow the process of code -> VMMaker -> VM. If the VM team wants to wait before building a new VM's until other primitives are available, that is fine, but if a build is going to be done anyway for other issues, please include the DESPlugin.

Thank you for your help!
Ron Teitelbaum
Cryptography Team Leader
DESPlugin.st (18 KB) 01-01-70 00:33
RobDESPlugin.st (18 KB) 01-01-70 00:33
Ron 10-12-06 20:15 From: Robert Withers
Sent: Thursday, October 12, 2006 11:50 AM

Ron, I don't believe the DESPlugin is part of VMMaker. It is part of our DES package and it is confused about it's superclass. Steps to get the DESPlugin into an image with VMMaker:

1) take 3.7 image, which has VMMaker loaded.
2) load Cryptography package from SqueakMap (no Monticello in 3.7)
3) respecify the superclass of DESPlugin to be InterpreterProxy.
4) run VMMaker and generate plugin

The 3.8/3.9 image has no VMMaker in it and the VMMaker on SqueakMap is in an inconsistent state.

I hope this helps,
Ron 10-12-06 20:15 Rob,

Thank you for that clarification. I thought that it was already included.


Since it is not part of the VMMaker can we have it included? What specifically do you need from us to make this happen? Does the plug-in need to be pulled out of our code and submitted separately? I attached a st file of the plug-in.

Ron 10-12-06 21:01 Ron,

That fileout has ProtoObject as the superclass, that needs to be replaced with InterpreterPlugin, I believe is the correct superclass - not InterpreterProxy.


I replaced the uploaded file with Rob's version
Ron 10-12-06 21:04 Ok I uploaded a RobDESPlugin.st << Please use this file.
tim 12-29-07 03:41 OK, I can include the DES plugin but someone needs to bring it up to date;
swap the _ assigns for := assigns
remove the silly comments ("who is keyser soze" for example)
use the 64bit clean types such as usqInt instead of unsigned long
use the 64bit clean macros such as byteAtPointer()
tim 05-27-08 18:16 Reminder sent to: Ron|Since I'm trying to update VMMaker, you might like to update the plugin code as per my last note.
tim 08-07-08 00:29 Reminder sent to: Ron|Any progress on this?
lewis 12-11-15 03:20 Discussed and agreed on vm-dev list http://lists.squeakfoundation.org/pipermail/vm-dev/2015-December/020108.html [^]

Remove DSAPlugin from VMMaker (trunk and oscog both), and refer instead
to the version in the Cryptography repository. This enables inclusion
of three other Cryptography plugins from that repository, and also puts
responsibility for ongoing maintenance of the DSAPlugin with the
Cryptography team.

DSAPlugin has been removed from VMMaker and VMMaker.oscog, and build script will now refer to Crytography.
lewis 12-11-15 03:50 DSAPlugin has been removed from VMMaker and VMMaker.oscog, and build script will now refer to Crytography.
7844 Morphic minor always 12-08-15 23:31 12-08-15 23:32 Nicolai Hess normal new none none open 0 strange rounded scrollbar look If you enable roundedScrollBarLook, the scrollbars look really
strange (see screenshot)
squeak_roundedscrollbarlook.png (15 KB) 01-01-70 00:33
Nicolai Hess 12-08-15 23:32 "the vertical scrollbars" look really strange
1436 System minor always 07-08-05 18:47 12-07-15 13:27 noury normal new none none windows windows 3.8 open 0 [BUG] FileDirectory root Hi,

I'm working on Windows XP. When I ask for the root file directory
(FileDirectory root)
I get an empty directory (FileDirectory on: ' ') which refer to the
image directory.
It works well for creating subdirectories
FileDirectory root createDirectory: 'MyDir'.

"However, when I try to retreive the created subDir
FileDirectory root directoryNamed: 'MyDir'

FileDirectory root createDirectory: 'MyDir'.
"Answers the parent dir (FileDirectory root) instead of the created dir
(MyDir) as I first expected
... It seems strange to me..."
Doesn't seem to be an issue on mac osx/unix. Is it still troublesome in windows?
Patrickr 12-07-15 13:27 I am looking into this issue and it strikes me as rather twisted.

The main issue is, that the empty string as a path is ambiguously handled in the DosFileDirectory:

(FileDirectory on: '') directoryNames "Returns the drives of the system"

(FileDirectory on: '') createDirectory: 'TestDir' "Creates a directory in the image folder"

I think the empty string should be consistent with other platforms and refer to the image folder. Any other opinions or experiences why this works like that?
7842 FFI minor always 12-01-15 21:09 12-01-15 21:09 Nicolai Hess normal new none none 4.5 open 0 FFI examples on Linux /Unix examples don't work X11Display coloredRectangles

raises an error « coud not coerce arguments

posted on the mailing list and we have a bug entry in pharos bug tracker.

My analysis:

I replaced all X11Drawable arguments in the ffi call signature to ulong
and replace the call ... drawable ... with ... drawable xid ...

But I am confused because the latest update for the examples had
the comment "made the XLib examlpes actually work". So maybe my usage or version
of FFI is wrong.
see discussion
http://forum.world.st/FFI-examples-on-Linux-don-t-work-tp4779450.html [^]
http://forum.world.st/Maintainer-of-FFI-Package-tp4781016.html [^]

attached the change set I made to make the examples working again.
But I don't know
fix_ffi_unix_examples.1.cs (6 KB) 01-01-70 00:33
7814 Any major always 03-30-14 11:36 11-21-15 22:03 Herbert Koenig lewis normal acknowledged none none open 0 Can't save morphic projects from 4.5 to local disk only In a fresh 4.5 all in one:
Projects --> new morphic project
In that Project:
Projects --> save project
Fill in the dialog, save on local disk only --> MNU "ScrapBook>>emptyScraps book"

Fails with empty project and with some Morphs in the project MessageNotUnderstood# ScrapBook##emptyScrapsBook.png (28 KB) 01-01-70 00:33
NotImplemented# ClassBinding or a superclass should implement objectForDataStream#.gif (20 KB) 01-01-70 00:33
Herbert Koenig 03-30-14 11:40 OS: Win 7 64 Bit Home Premium
lewis 03-30-14 14:07 We have at least two problems here. The first problem is MNU ScrapBook>>enptyScrapsBook. This is a spelling error in some recently refactored methods, and is now fixed in trunk.

There is an additional problem, not yet resolved, related to Environments. Saving a project now leads to:

ClassBinding>>objectForDataStream: refStream
    "It's not yet clear how serialization should work in the presence of environments"
    self shouldBeImplemented.
lewis 07-26-15 02:56 Colin suggested a short-term fix here:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2014-September/180018.html [^]

For Binding>>objectForDataStream: the easy fix for the default case is to use the same implementation as Association>>objectForDataStream:. This will make save and reloading of object work in the case where there's only one environment in the image.

The case of multiple environments boils down to this: saving objects to
disk would have to be done from the perspective of a given environment, and
loading would have to be done from that of an equivalent environment.
Association's implementation special-cases instances that represent global
variables so that they get looked up in "Smalltalk globals" when the
objects are reloaded from disk. That should be replaced with "Environment
current" so that the lookup happens in the environment we're loading
against, rather than the environment where Binding is compiled.

Looking further up the layers of abstraction, each Project should probably
have its own environment, which would be used for compiling custom code for
that project, and serializing the project to disk.

kfr 11-21-15 22:03 http://source.squeak.org/trunk/Environments-kfr.59.mcz [^]

Colin's suggested workaround for Bindings

http://lists.squeakfoundation.org/pipermail/squeak-dev/2014-September/180018.html [^]
7770 Compiler minor always 06-19-13 09:49 11-20-15 11:13 vaidasd normal new none none 4.4 open 0 cascading does not work with super Compiler refuses to compile
FrankShearar 06-19-13 09:54 What do you expect this to mean? A cascade says "send this sequence of messages to the same object", so do you expect this to be equivalent to

  super initialize.
  self setListProperties.

Patrickr 11-18-15 13:57 For consistency reasons, I'd actually expect this to be equivalent to:

super initialize.
super setListProperties.

corresponding to:



self initialize.
self setListProperties.

marceltaeumel 11-20-15 11:10 I would rather not support cascading for super sends because this might easily be overlooked when debugging. It is not only about sending messages to the same object but also modifying message lookup again and again.

Such code smells. :-/
krono 11-20-15 11:13 +1 Expected behavior, I'd say.
7774 Installer major always 06-25-13 08:04 11-20-15 11:04 heikos Keith_Hodges normal assigned none none open 0 Description for the Usage on Windows (All in One Package) definetely not correct Dear team,

it was said, that you can start different Image-Files as it is the use for Smalltalk-Systems. You have to Right-Click on the image file and search in the settings for the virtual machine. Has it been tested on Windows XP? I don't believe. That does not function! Everytime Squeak comes up with a message error, calling *no content to install*.

I am an administrator which has to bring up a Windows XP desktop for a school (although preferring Linux!). On Linux there are no probs with Squeak. But on Windows the description on the website is definetely not correct IMHO (has it been *really* tested?); the configuration file shows version 4.3 as the windows title. That is not a prob, but I assume that some tests have not been done.
Squeak is not a great, but a *very* great thing. But I do not believe that these unnecessary problems support acceptance.

Heiko Schroeder
Patrickr 11-20-15 10:28 Does anyone know to which part of the website this refers to? This sound like it is solved with the new website and could be closed.
Nicolai Hess 11-20-15 11:01 I don't know where this is refereed on the website, but it is still an
issue on windows if you use a all-in-one squeak distribution and
tries to open a squeak.exe with a different squeak.image or the "correct" image
from a different location
For example, copy the squeak image from

open LinuxAndWindows in a explorer and drag and drop the image file on
the squeak.exe
-> CodeLoader Error: no content t o install.
Nicolai Hess 11-20-15 11:04 And the image that actually starts is not the one you dragged onto the vm
but the image that is defined in the squeak.ini file
7839 OS-Win32 minor always 11-12-15 12:07 11-18-15 20:40 sumi normal new none none 5.0 open 0 destroy then install shared flaps causes an error on Win VM flaps... -> destroy all shared flaps -> install default shared flaps operation could not be completed because of an error on Windows VM. (on Mac OS X, it could be completed without problem.)

It seems malfunction of the #become: in UnscriptedPlayer >> #assureUniClass on Win VM.
Nicolai Hess 11-18-15 20:40 I can reproduce this error only in 5.0, not in 4.6 maybe this
is an issue with spur ?
7768 Morphic minor always 06-13-13 19:55 11-18-15 15:28 FrankShearar normal new none none trunk open 0 Filters sometimes don't stop filtering * open a Browser
* in the System Category pane, type "net"
* alt-f to find Browser (which is in a Tools package)
* Note how Browser's being browsed, but the System Category pane still shows only those packages matching "net". It should show all the system categories, and have the selected class' category selected.

I think this is because the PluggableListMorphPlus isn't told to #removeFilter. Ah, but it is! So the list looks like it's unfiltered - no pink - but the items in the list only contain the short, filtered list of items.
Patrickr 11-18-15 15:28 This is still an issue in 4.5, but has been fixed in 5.0. As this issue only refers to trunk, I propose to either change the version of this issue or close it.
7796 text always 11-24-13 15:51 11-18-15 14:36 Nicolai Hess normal new none none open 0 current release at www.squeak.org 4.3 or 4.4? Two links at www.squeak.org/Download link to
http://ftp.squeak.org/4.3/Squeak-4.3-All-in-One.zip [^]

1. (At top) Fastest way to start is *Squeak All-in-One* distribution ...
2. Image file
This is the official Squeak release.

    *Squeak Release*

but the one link on the right side mentions Version 4.4 and links
to this version.
Patrickr 11-18-15 14:36 This should be closed.
5506 Morphic minor always 11-24-06 20:10 11-17-15 13:11 sumi lewis normal resolved none none 3.9 fixed 0 [BUG][FIX] find again (alt + g) doesn't work properly after replace again (alt + j) shortcut After "alt + f" or "alt + h" (set find string), "alt + g" (find again) works fine.
After "alt + f" or "alt + h" then type something (replace string), "alt + g" works fine, too.
But, after "alt + f" or "alt + h" then type something then "alt + j" (replace again), "alt + g" doesn't work properly but seems working as "replace again".

The attached changeset file fixes the problem.
ParagraphEditor-findAgain.st.gz (0 KB) 01-01-70 00:33
findAgainFix-sumim.1.cs.gz (0 KB) 01-01-70 00:33
lewis 11-17-15 13:11 Fixed now in Squeak trunk.

http://lists.squeakfoundation.org/pipermail/squeak-dev/2015-November/186769.html [^]
http://lists.squeakfoundation.org/pipermail/squeak-dev/2015-November/186771.html [^]
7841 VM minor always 11-16-15 08:58 11-16-15 20:57 Nicolai Hess lewis normal assigned none none open 0 error "please insert disk" (windows vm) If you have a device (usb card reader) and eject the disk/card. Every access
on the directory list, that will ask the drive if it is empty, will
trigger a modal dialog:
"There is no disk in the drive. Please insert a disk into drive <etc>"

There is no way to bypass this error message dialog from within the image.
We need a change for the squeak windows vm.
see thread http://forum.world.st/error-please-insert-disk-windows-vm-tp4859473.html [^] bug_7841_error_insert_disk.patch (2 KB) 01-01-70 00:33
Nicolai Hess 11-16-15 09:00 The solution I found is to call SetErrorMode(SEM_FAILCRITICALERRORS)

I would like to propose the following change to sqwin32directory.c
wrap the call to FindFirstFileW/FindNextFileW with

call FindFirstFileW/FindNextFileW


and call this functions in at least dir_lookup()
(the other file/directory methods are save).
Nicolai Hess 11-16-15 20:57 attached a patch with the suggested fix.
7840 Tools tweak always 11-13-15 01:59 11-13-15 01:59 sumi normal new none none 5.0 open 0 [ENH][FIX] add new point size menu to FontChooser like StrikeFont fromUser (and fix) This patch allows you to use "new size..." yellow menu on FontChooserTool if TTCFont family selected, like StrikeFont fromUser.

And also includes code to prevent StrikeFont fromUser generated menu from an error if you choose "new size" sub-menu item and then accept non-number string or cancel the dialog raised by #addNewFontSizeDialog: .
addNewFontSizeMenuForFontChooser-sumim.4.cs (2 KB) 01-01-70 00:33
7832 Any minor always 09-12-15 21:07 09-12-15 21:07 Nicolai Hess KenCausey normal assigned none none 5.0 open 0 Cut off info text about 32-libs If you start squeak on a 64-bit system you will see the following "warning"
on the command line, for Squeak 4.6:

Squeak on a 64-bit System. Hope the 32-bit runtime libraries are installed ...

But for Squeak-5.0 the text looks "cut off":

Running 32-bit Squeak on a 64-bit System. install-libs32 may install them.
7831 Any minor always 09-12-15 21:02 09-12-15 21:02 Nicolai Hess KenCausey normal assigned none none 5.0 open 0 Horizontal scrollbar not always proprtional to the content The is some strange behavior on the horizontal scrollbar, sometimes
it enables scrolling about an area that is much bigger than the
content, and sometimes it is to small.

attached a picture of the system browser, showing both issues.

In the package pane, you see already the "longest content" but the
scrollbar allows to scroll an addition third. So, you can scroll the
whole content out of the screen.
On the other side, the method pane, the scrollbar is already on the
right most position, but you still can not see the last part of the method names.

(It seems, this discrepancy between the visible area and the size of the scrollbar depends on the window size)
SqueakScreen.2.png (46 KB) 01-01-70 00:33
7830 Any minor always 09-11-15 20:59 09-11-15 20:59 Nicolai Hess KenCausey normal assigned none none 5.0 open 0 MessageNotUnderstood: SolidFillStyle>>addFillStyleMenuItems:hand:from: Show Halos for the Desktop (world) and select the "Menu"-Halo
-> MessageNotUnderstood: SolidFillStyle>>addFillStyleMenuItems:hand:from:
7829 Graphics minor always 09-11-15 12:03 09-11-15 12:03 Nicolai Hess normal new none none open 0 New soft shadow isn't "soft" in some situations Enable soft shadow (it is enabled by default in Squeak 5.0).

change display depth < 32
drag a progress morph
drag a tool from the "objects" dialog or from the "Tools"-flap

while the object is being dragged, the soft shadow not soft but a big
black border.
There is another issue with soft shadows for menus.
(I tried to make a screenshot but the artifact is not visible in the screenshot)
For example:

open system browser
press the "source"-button (press in the middle of the button)
-> on the right side of the mouse, the menu opens, on the left
side, you'll see a dark shadow (rendering artifact) on the source button.
7828 tweak always 06-30-15 09:13 06-30-15 09:13 JulianN normal new none none open 0 Monticello Merge Functionality not intuitive When mergeing using the monticello merge functionality it is not comprehensible what the different colors (red, blue (stroked), not marked) mean in respect to your changes.
7793 VM minor always 10-19-13 21:36 04-22-15 21:40 lewis lewis normal resolved none none fixed 0 Memory leak in the SqueakSSL plugin on unix Reported by Levente Uzonyi on squeak-dev:

We've been experiencing memory leakage in long running Squeak images using
SqueakSSL. After a bit of monitoring I found that 132 bytes get leaked
for each https request done from the image. After a bit of code review,
I've probably found the culprit, and another potential source of memory
leak. For the reference, the source file this mail is about is
http://squeakvm.org/cgi-bin/viewvc.cgi/squeak/branches/Cog/platforms/unix/plugins/SqueakSSL/sqUnixOpenSSL.c?revision=2713&view=markup [^]
The main memory leak is in sqDestroySSL function (starting on line 117),
which doesn't free the bioRead and bioWrite variables (allocated by
sqCreateSSL on line 98-99) of the ssl object. My suggested solution is to
insert the following two lines before line 132:
The other potential source of memory leak is sqSetStringPropertySSL
(starting on line 381). It allocates a chunk of memory on line 389, but
doesn't use nor free it, if the propID argument is not
SQSSL_PROP_CERTNAME. My suggested solution is to insert the following line
after line 396:

        if(property) free(property);

Note that I haven't tested any of these, but I hope someone who is more
into VM building right now will try them.
sqUnixOpenSSL.c.gz (3 KB) 01-01-70 00:33
lewis 10-20-13 17:00 The fix has been applied to trunk (interpreter), and the identical update should be added in Cog and Pharo.
lewis 01-30-15 01:31 Fix has been applied to SVN trunk
krono 04-22-15 21:40 This is also fixed in binary at https://github.com/itsmeront/squeakssl/releases/tag/v0.2.0 [^]
7824 VM feature always 10-17-14 00:43 04-22-15 21:39 lewis lewis normal assigned none none open 0 Add TLS SNI Server Name Indication support to SqueakSSL plugin Date: Thu, 16 Oct 2014 13:46:45 +0200 (CEST)
From: Levente Uzonyi <leves@elte.hu>
To: vm-dev@lists.squeakfoundation.org, squeak-dev@lists.squeakfoundation.org
Subject: [Vm-dev] SqueakSSL + TLS SNI
I've implemented support for TLS SNI[1] for SqueakSSL on unix. I've uploaded the modified source files[2][3], a diff[4], and a prebuilt module[5] (built on Ubuntu 14.04 from the Cog branch).

The image side code is also available[6], along with an updated version of the WebClient[7] package, and intermediate packages with various improvements[8].

The image side code works even if the plugin doesn't support TLS SNI, but this version of WebClient won't work with older versions of the SqueakSSL-Core package.

Please review the changes, and consider adding them to the corresponding repositories!


[1] https://en.wikipedia.org/wiki/Server_Name_Indication [^]
[2] http://leves.web.elte.hu/squeak/SqueakSSL/SqueakSSL.h [^]
[3] http://leves.web.elte.hu/squeak/SqueakSSL/sqUnixOpenSSL.c [^]
[4] http://leves.web.elte.hu/squeak/SqueakSSL/diff.txt [^]
[5] http://leves.web.elte.hu/squeak/SqueakSSL/SqueakSSL [^]
[6] http://leves.web.elte.hu/squeak/SqueakSSL/SqueakSSL-Core-ul.29.mcz [^]
[7] http://leves.web.elte.hu/squeak/SqueakSSL/WebClient-Core-ul.98.mcz [^]
[8] http://leves.web.elte.hu/squeak/SqueakSSL/ [^]
diff.txt (3 KB) 01-01-70 00:33
sqUnixOpenSSL.c (14 KB) 01-01-70 00:33
SqueakSSL.h (5 KB) 01-01-70 00:33
sqUnixSocket.diff (7 KB) 01-01-70 00:33
WebClient-Core-ul.98.mcz (105 KB) 01-01-70 00:33
SqueakSSL-Core-ul.29.mcz (32 KB) 01-01-70 00:33
SqueakSSL (80 KB) 01-01-70 00:33
sqMacSSL.patch (17 KB) 01-01-70 00:33
sqMacSSL.c (16 KB) 01-01-70 00:33
lewis 11-12-14 22:56 Updates added to the oscog branch in Revision: 3130. Still needs to be applied to trunk.
lewis 04-10-15 00:58 Subject: Re: [squeak-dev] SqueakSSL + TLS SNI
From: Tobias Pape <Das.Linux@gmx.de>
Date: Fri, 10 Apr 2015 02:17:45 +0200
To: The general-purpose Squeak developers list <squeak-dev@lists.squeakfoundation.org>


On 16.10.2014, at 13:46, Levente Uzonyi <leves@elte.hu> wrote:

I have things for OSX i think.
Can someone confirm?

[-- Attachment 0000002: sqMacSSL.patch --]

[-- Attachment 0000003: sqMacSSL.c --]

krono 04-22-15 21:39 All this is now available on https://github.com/itsmeront/squeakssl/releases/tag/v0.2.0 [^]
7817 VM minor always 04-13-14 14:38 12-10-14 15:59 lewis lewis normal assigned none none open 0 Fix vm-display-X11 problem for Japanese character input Fix provided by Hachisuka-San in Aichi Sangyo University

Reported by TAKAHASHI Makoto (makoto at kobe-u.ac.jp)

Posted by Hilaire Fernandes on Pharo list
http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2014-April/094588.html [^]

Proposed fix for vm-display-X11/sqUnixX11.c is included in post from Hilaire.
Fix excerpted from mailing list post:
De : "TAKAHASHI Makoto" <makoto at kobe-u.ac.jp>
Date : 11 avr. 2014 15:46
Objet : Re: Japanese input in DrGeo
À : <hilaire.fernandes at gmail.com>
Cc :

Hello Hilarie,

Recently, Hachisuka-San in Aichi Sangyo University has resolved the issue
of Scratch in Linux.
http://www.asu.ac.jp/hachi/v3/scratch14ime.html [^]

Unfortunately, this page is written in Japanese. (However you can see
The resolution of the problem in DrGeo is as follows:
1. In drgeo.sh, add exec options '-compositioninput' like
exec "$VM/pharo" \
        -plugins "$VM" \
        -encoding utf-8 \
        -vm-display-X11 \
        -compositioninput \

2. Change recordPendingKeys(void) in vm-display-X11/sqUnixX11.c as follows
rebuild vm-display-X11.

static int recordPendingKeys(void)
  if (inputCount <= 0) {
    if (inputBuf != inputString) {
      inputBuf= inputString;
    return 0;

  int utf32 = 0;
  while (inputCount > 0) {
        //110x xxxx 10xx xxxx
        if(inputCount >= 2 &&
           pendingKey[0] >= 0xc0 && pendingKey[0] <= 0xdf &&
           pendingKey[1] >= 0x80 && pendingKey[1] <= 0xbf)
                utf32 = ((pendingKey[0] & 0x1f) << 6) |
                         (pendingKey[1] & 0x3f);
                recordKeyboardEvent(0, EventKeyDown, modifierState, utf32);
                recordKeyboardEvent(0, EventKeyChar, modifierState, utf32);
        //1110 xxxx 10xx xxxx 10xx xxxx
        } else if(inputCount >= 3 &&
                  pendingKey[0] >= 0xe0 && pendingKey[0] <= 0xef &&
                  pendingKey[1] >= 0x80 && pendingKey[1] <= 0xbf &&
                  pendingKey[2] >= 0x80 && pendingKey[2] <= 0xbf)
                utf32 = ((pendingKey[0] & 0x0f) << 12) |
                        ((pendingKey[1] & 0x3f) << 6) |
                         (pendingKey[2] & 0x3f);
                recordKeyboardEvent(0, EventKeyDown, modifierState, utf32);
                recordKeyboardEvent(0, EventKeyChar, modifierState, utf32);
        //1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
        } else if(inputCount >= 4 &&
                  pendingKey[0] >= 0xf0 && pendingKey[0] <= 0xf7 &&
                  pendingKey[1] >= 0x80 && pendingKey[1] <= 0xbf &&
                  pendingKey[2] >= 0x80 && pendingKey[2] <= 0xbf &&
                  pendingKey[3] >= 0x80 && pendingKey[3] <= 0xbf)
                utf32 = ((pendingKey[0] & 0x07) << 18) |
                        ((pendingKey[1] & 0x3f) << 12) |
                        ((pendingKey[2] & 0x3f) << 6) |
                         (pendingKey[3] & 0x3f);
                recordKeyboardEvent(0, EventKeyDown, modifierState, utf32);
                recordKeyboardEvent(0, EventKeyChar, modifierState, utf32);
        } else {
                recordKeyboardEvent(*pendingKey, EventKeyDown,
modifierState, 0);
                recordKeyboardEvent(*pendingKey, EventKeyChar,
modifierState, 0);
                recordKeystroke(*pendingKey); /* DEPRECATED */
  return 1;

3. Exchange vm-display-X11 in DrGeo.app/Contents/Linux.

I tried this resolution. Finally I can put japanese character in DrGeo in
LinuxMint 16.

TAKAHASHI Makoto E-mail makoto at kobe-u.ac.jp
drgeojapaneseinput.png (91 KB) 01-01-70 00:33
sqUnixX11.c (179 KB) 01-01-70 00:33
lewis 04-13-14 14:47 Original problem description and fix are at http://www.asu.ac.jp/hachi/v3/scratch14ime.html [^]

The attached sqUnixX11.c is from that web page.

lewis 12-10-14 15:59 Hillaire posted a follow up inquiry from

http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/2014-December/103882.html [^]
7822 VM feature always 10-11-14 21:46 10-12-14 13:09 lewis lewis normal assigned none none open 0 Unix aio VM support for 1024+ descriptors The unix aio mechanism is limited to 1024 active file descriptors for sockets and file handles. For server application with many active socket descriptors, and for which the per-process descriptor limit has been increased above the default of 1024, this limit causes problems. Reported by Göran Krampe:
http://lists.squeakfoundation.org/pipermail/vm-dev/2014-October/016648.html [^]

Reference to a reported fix described at:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2003-May/057750.html [^]

Contact Ragnar Hojland Espinosa for the fix as per above link. Presumably this is Linux specific, so appropriate ifdef and Cmake control will be required.
lewis 10-12-14 13:09 Levente Uzonyi adds this comment:

I think this is a great summary of the current status on unix systems:
http://daniel.haxx.se/docs/poll-vs-select.html [^]
I think the best would be to use libevent or libev, but adding support for
epoll (on linux only) is probably a lot easier thing to do.
7823 VM major always 10-11-14 22:05 10-11-14 22:07 lewis lewis normal assigned none none open 0 Patch for socket accept problem on unix VM Fix socket accept issues for unix VM server applications.

Detailed problem description at http://lists.squeakfoundation.org/pipermail/squeak-dev/2005-August/093575.html [^]

Fix provided by David Shaffer (cdshaffer at acm.org) http://lists.squeakfoundation.org/pipermail/squeak-dev/2005-August/093638.html [^]

Recent problem revival note http://lists.squeakfoundation.org/pipermail/vm-dev/2014-October/016648.html [^]
sqUnixSocket.diff (7 KB) 01-01-70 00:33
lewis 10-11-14 22:07 sqUnixSocket.diff is David Shaffer's patch that was attached to his email at http://lists.squeakfoundation.org/pipermail/squeak-dev/2005-August/093638.html [^]
7820 VM feature always 09-28-14 00:24 09-28-14 00:24 lewis lewis normal assigned none none open 0 Add SCTP support to the socket plugin Add SCTP support to the socket plugin, submitted by Holger Freyther.
Original post: http://lists.squeakfoundation.org/pipermail/vm-dev/2013-February/011971.html [^]

Socket support code patches: https://gitorious.org/cogvm/zeckes-cogvm/commit/24bb6fd2c1666137356754049f03ca5f246711d7 [^]
Patches are in the Pharo fork of the oscog branch. Could be harvested to trunk and oscog.

Other notes:
http://lists.squeakfoundation.org/pipermail/vm-dev/2013-February/011972.html [^]
http://lists.squeakfoundation.org/pipermail/vm-dev/2013-February/011973.html [^]
http://lists.squeakfoundation.org/pipermail/vm-dev/2014-September/016483.html [^]
5711 Morphic minor always 01-08-07 15:03 09-16-14 19:06 jreyes nicolas cellier normal resolved none none 3.9 fixed 0 TextFieldMorph changes text position when emptied Once initialized the TextFieldMorph displays an 'abc' text in the upper left corner. The text can be obviously edited but if you delete all the characters, the Morph changes its color to the default light gray and the text written after that doesnt appear in the top left corner anymore but one line below. "Sample code"
textMorph:=TextFieldMorph new openInWorld.
"At this point I delete all characters ('abc') mannually and write some new text"
textMorph fit. "After this, text goes to the corner again"

Pressing Alt-0 the new text goes back to the corner as well, but that behaviour should be default. This reported change in text position doesnt happen either if you select the 'abc' initial text and write some replacement, only when the TextFieldMorph is emptied.
Mantis 0005711 - FixTextFieldMorphLinePosition.1.cs.gz (1 KB) 01-01-70 00:33
FixTextFieldMorphLinePosition-M5711-ASB.1.cs.gz (1 KB) 01-01-70 00:33
Antony Blakey 08-07-08 00:01 If you do this:

  textField := TextFieldMorph new.
  textField contents: ''.
  textField extent: 400 @ 40.
  textField openInWorld.

and then this:

  event := KeyboardEvent new setType: #keystroke buttons: 0 position: 0@0 keyValue: $a asciiValue hand: nil stamp: 0.
  textField submorphs first handleKeystroke: event.

then the text is one line down. If you subsequently do this:

  textField append: 'a'.

then the text goes back to the first line. I suspect it has something to do with the null line, that is inserted when the content is empty, being incorrectly processed for keystrokes, possibly an error in an optimization. I am tracing this to find a fix.
Antony Blakey 08-07-08 04:01 The bug is in TextComposer>>composeLinesFrom:to:delta:into:priorLines:atY:textStyle:text:container:wantsColumnBreaks:

When the null line is added, it uses "container topLeft", whereas the rest of the code use "container top", which for TextContainer is NOT the same as "topLeft y".

I've attached a changeset containing that fix.

Antony Blakey 08-12-08 03:57 Uploaded a properly-named change set after watching Ken Causey's screencast.
ScottWallace 08-12-08 22:43 Excellent catch, Antony! "Etoy" users are greatly affected by this bug, and I'll see to it that your fix gets into the olpc-etoys and Squeakland updates streams asap. Thank you!
ScottWallace 08-13-08 01:49 Actually, though in the image variant I was using I was able to reproduce the bug described above, and to verify that the proposed fix did work, I subsequently discovered that I could not reproduce the symptom in the current olpc/etoys and about-to-be-released squeakland images. So for the moment anyway I won't pursue pushing the change to those update streams. I don't yet understand what change(s) in those systems may have worked around the need for the fix, but I note that it wasn't any change to the method under discussion here...
MarcusDenker 11-16-08 16:41 in pharo 10151
nicolas cellier 09-16-14 19:06 Fixed in trunk 4.6
http://source.squeak.org/trunk/Graphics-topa.301.mcz [^]

Thanks Antony and Tobias
7539 VM feature always 05-28-10 00:52 05-19-14 23:05 lewis lewis normal assigned none none open 0 Plugins should use platform libraries where possible. Gentoo removed Squeak for this reason. Some plugins are built from archival copies of library source code. Where possible, these should use platform-supplied libraries to avoid security and licensing concerns. Use of old copies of library sources has let to removal of Squeak from at least one Linux distribution. Gentoo discussion leading to removal of Squeak from distribution:
http://bugs.gentoo.org/show_bug.cgi?id=247363 [^]

Discussion on vm-dev begins here:
http://lists.squeakfoundation.org/pipermail/vm-dev/2010-May/004625.html [^]

John's summary and history rationale:
http://lists.squeakfoundation.org/pipermail/vm-dev/2010-May/004629.html [^]
http://lists.squeakfoundation.org/pipermail/vm-dev/2010-May/004633.html [^]
lewis 05-17-14 14:03 A caution regarding GPL versus LGPL licensing for libjpeg. I do not know if this is a problem, but it should be checked to ensure that we do not introduce a GPL dependency into the VM.

Date: Fri, 16 May 2014 22:51:17 +0200
Subject: Re: [squeak-dev] VM should use platform libraries where possible (was: 16 bit GIFs (was: A nitpick))
From: Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com>
To: The general-purpose Squeak developers list
> There should be no GPL issues because linking to a runtime libjpeg is no
> different from linking to any other runtime library on Linux.
Beware, this is why LGPL was created for, no?
But GPL is different from LGPL.
I don't feel like reading those licenses again, it's just too boring, so
someone should confirm that:
link with GPL and you become GPL, it's viral.
lewis 05-19-14 23:05 From: David Corking <lists@dcorking.com>
Date: Mon, 19 May 2014 20:33:11 +0100
Subject: Re: [squeak-dev] VM should use platform libraries where possible (was: 16 bit GIFs (was: A nitpick))
To: The general-purpose Squeak developers list <squeak-dev@lists.squeakfoundation.org>


Sourceforge does not appear to host the current development of
libjpeg, and seems to have caused us unnecessary worry about the
license. The SF site has version 6b, which is 6 years behind Guido
Vollbeding's version 9a. (I think SF may have trouble displaying licenses
that aren't from a standard short list, so ended up with the wrong one.)

Version 9a is at http://ijg.org/ [^]

Whether from Sourceforge or IJG or from Squeak's own repository[1],
the license is not GPL. It is this custom but liberal license:

http://directory.fsf.org/wiki?title=License:JPEG [^]

I am not a lawyer. I can't imagine incompatibilities with Squeak's
Apache and MIT licenses.

Ubuntu and Fedora prefer libjpeg-turbo, a fork which uses the same
liberal license and, I hope, the same API.

libjpeg-turbo really is on Sourceforge:

http://sourceforge.net/p/libjpeg-turbo/code/HEAD/tree/trunk/ [^]

I am not in any way a C or SLANG hacker, though I would like to learn.
Yet a quick browse of change.log in libjpegsr9a gives me some hope
that the API has not had many breaking changes since version 6a, which
I guess is the version that is in the Squeak platform sources.

While I have them handy, here are the version numbers as I found them
installed on my machines:
Debian 7.1 libjpeg8 8d-1 (binary is libjpeg.so.8.4.0)
Fedora 20 libjpeg-turbo 1.3.1 (binary is libjpeg.so.62.1.0)
Ubuntu 12.04 (old I know) libjpeg-turbo 1.1.90+svn733-0ubuntu4.3
(binary is libjpeg.so.8.4.0)

Guido's site links to this one, which hopefully will offer more
specific clues about what Squeak would need to change to work with the
newer platform libraries..

http://jpegclub.org/support/ [^]

Hope that helps. Have fun!

5504 ST80 tweak always 11-24-06 18:14 05-13-14 20:32 sumi nicolas cellier normal resolved none none 3.9 fixed 0 [FIX][ENH] editor mode FileList should keeps its contents even if saving as another name We can open a text file using FileList's editor mode, by choosing world menu -> open... -> file... or "do it" a script such as...

(FileStream fileNamed: 'some.txt') edit

Two problems occurs when we change the file's name. Whenever renaming, we have to re-open the renamed file because the code pane, no longer, shows the contents of the text file, but file list of current directory.

The attached changeset file fixes these problems.
FileListLabelTweak.1.cs.gz (1 KB) 01-01-70 00:33
FileListLabelTweak.2.cs.gz (1 KB) 01-01-70 00:33
fileEditorSaveAsFix-sumim-M0005504.2.cs (2 KB) 01-01-70 00:33
edgardec 04-17-07 11:17 In 3.10 I was able to rename file and the code pane shows the file contents
sumi 05-13-08 06:35 Unfortunately, the 3.10 still has the same problem.

Please try a FileList window that is opened by "(FileStream fileNamed: 'some.txt') edit". After rename operation by accept (alt + s) -> "test.txt already exists." pop-up -> select "choose another name" -> input new file name -> accept, you can see that the FileList window shows file list of current directory, not the text previously editing.
ScottWallace 05-28-08 09:03 The code in the fileout assumes the presence of an inst var named labelString in FileList, but in most (perhaps all) Squeak versions, FileList does not have an inst var of that name.

Presumably the intention of the fileout is to add the inst var #labelString to FileList, but if so, the class redefinition to accomplish that somehow got omitted from the fileout.
sumi 05-28-08 09:52 I attached another change-set file that includes FileList class definition. Thanks.
sumi 05-07-10 02:47 This problem still remains in 4.1
So I re-write a new patch that attached as fileEditorSaveAsFix-sumim-M0005504.2.cs
It is replacement of FileListLabelTweak.2.cs we needs no longer.

nicolas cellier 05-13-14 20:32 Integrated in trunk (4.6) http://source.squeak.org/trunk/Tools-nice.521.mcz [^]
Thanks sumi!
3612 Compiler minor always 05-12-06 18:11 05-12-14 23:15 kwl nicolas cellier normal resolved none none 3.9 fixed 0 MethodProperties are nil when creating CompiledMethod with the toReturnXYZ methods The toReturnXYZ methods on the class side leave MethodProperties uninitialized and so Behavior>>#basicAddSelector:withMethod: fails when it does compiledMethod #selector:.

Looks like MethodProperties would like to be a bit closer to CompiledMethod.
MessageNotUnderstood: UndefinedObject>>selector:
12 May 2006 6:08:28 pm

VM: Win32 - a SmalltalkImage
Image: Squeak3.9alpha [latest update: 0007028]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir ...etc...
Trusted Dir ...etc...
Untrusted Dir ...etc...

UndefinedObject(Object)>>doesNotUnderstand: #selector:
    Receiver: nil
    Arguments and temporary variables:
        aMessage: selector: #x
    Receiver's instance variables:

    Receiver: a CompiledMethod (1207)
    Arguments and temporary variables:
        aSymbol: #x
    Receiver's instance variables:
a CompiledMethod (1207)

    Receiver: a descendent of MutableSlots
    Arguments and temporary variables:
        selector: #x
        compiledMethod: a CompiledMethod (1207)
        oldMethodOrNil: nil
    Receiver's instance variables:
        superclass: MutableSlots
        methodDict: a MethodDictionary(#x->a CompiledMethod (1207) )
        format: 132
        traitComposition: nil
        localSelectors: nil

    Receiver: a descendent of MutableSlots
    Arguments and temporary variables:
        selector: #x
        compiledMethod: a CompiledMethod (1207)
        oldMethodOrNil: nil
    Receiver's instance variables:
        superclass: MutableSlots
        methodDict: a MethodDictionary(#x->a CompiledMethod (1207) )
        format: 132
        traitComposition: nil
        localSelectors: nil
CompiledMethodTest-toReturnXyz-kwl-M3612.st (1 KB) 01-01-70 00:33
kwl 12-18-08 17:50 uploaded a test which reproduces the problem.

this test should go green once CompiledMethod or Behavior have been fixed.
nicolas cellier 05-12-14 23:15 The test have rotten a bit, the trailer should now be CompiledmethodTrailer empty rather than #(0 0 0 0).

Also, the first assertion does not make sense:

        shouldnt: [aBehavior basicAddSelector: #m0 withMethod: CompiledMethod toReturnSelf].

Maybe the intention was shouldnt: [...] raise: MessageNotUnderstood ?

After fixing those two slips, the test pass, so I consider the issue as resolved.
I ignore in which version exactly but won't dissect.
7084 Compiler minor always 06-07-08 02:16 05-12-14 22:46 Keith_Hodges normal feedback none none 3.9 open 0 ClassBuilder doesnt call doneCompiling: ClassBuilder-#nameIn... doesnt call doneCompiling: Fix from Andreas ClassBuilder-nameinEnvironmentsubclassOftypeinstanceVariableNamesclassVariableNamespoolDictionariescategoryunsafe.st (4 KB) 01-01-70 00:33
nicolas cellier 05-12-14 22:46 But the method sends #doneCompiling and then ensure: [Behavior flushObsoleteSubclasses].
So it is doing basically the same job as #doneCompiling:

Is the order of operation important ?
Or is it required by some extension class wanting to refine #doneCompiling: ?
4309 Compiler minor always 07-21-06 16:57 05-12-14 22:19 kwl nicolas cellier normal resolved none none 3.9 fixed 0 Compiler/Parser allows undefined variable when LHS to := The following snippet does NOT raise an error message:

 | tmp1 tmp2 |
  tmp1 := 2.
  tmp2 := tmp2 + tmp1

But the following modification DOES raise an "undefined. proceed?" dialog

 | tmp1 tmp2 |
  tmp1 := 2.
  tmp1 := tmp2 + tmp1

Tested with 3.8 + 3.9.

Note that the error message should speak about "uninitialized" instead of "undefined" because the variables are indeed between the |'s.
There can only be ONE rule for what is uninitialized and what is initialized, regardless of how a variable is used "mentioned" for the first time on the RHS of an expression.
nicolas cellier 05-12-14 22:19 This is no more true in Squeak 4.5, and probably has been fixed for a long time now (Eliot's closure?)
7755 Compiler minor always 03-14-13 10:45 05-12-14 22:15 FrankShearar nicolas cellier normal resolved none none trunk fixed 0 "1.0s" does not parse David Gorisek <david.gorisek@e-racuni.com> sent this to the Pharo list:

Hello all,

I am testing Pharo and I have noticed that the Pharo compiler does not treat ScaledDecimals the same way they are treated in other Smalltalk dialects (e.g. VW, VAST, Dolphin, STX, etc.).

For example the following is a valid code representing an instance of ScaledDecimal/FixedPoint in all other dialect.

1.0s + 2.0s

In Phare the code above wont compile, it has to be written as:

1.0s1 + 2.0s1

So I have made the following quick change to make Pharo compatible with other Smalltalk dialects. Maybe this change could be included in the next version of Pharo?

    "read the scale if any (stored in instVar).
    Answer true if found, answer false if none.
    If scale letter is not followed by a digit, this is not considered as an error.
    Scales are always read in base 10, though i do not see why..."

    scale := 0.
    sourceStream atEnd
        ifTrue: [ ^ false ].
    (sourceStream peekFor: $s)
        ifFalse: [ ^ false ].
    scale := self nextUnsignedIntegerOrNilBase: 10.
        ifNil: [
            scale := 0.
            (sourceStream peek ifNil: [false] ifNotNil: [ :nextChar | nextChar isLetter])
                ifTrue: [
                    sourceStream skip: -1. "ungobble the s"
                    ^ false ]
                ifFalse: [ ^ true ] ].
    ^ true
nicolas cellier 05-12-14 22:15 Fixed in trunk (4.6)
See http://source.squeak.org/trunk/Kernel-nice.849.mcz [^]
5905 Compiler minor always 02-01-07 21:24 05-12-14 19:58 lexspoon nicolas cellier normal resolved none none 3.9 fixed 0 please let class vars shadow globals Currently the system refuses to load two packages where one defines a global variable and the other a class variable. This causes an immediate total failure for any unfortunate person who runs into it. While this kind of error may make sense for monolithic image, it is problematic for package-ized development. As an example, Exupery 0.10 conflicts with SmallDEVS version 061206, over the variable name "Timer".
nicolas cellier 05-12-14 19:58 This was fixed a long time ago, probably together with related issue 1554
5793 ST80 minor always 01-20-07 05:57 05-12-14 19:46 gilad nicolas cellier normal resolved none none 3.8 fixed 0 Empty blocks do not conform to Blue Book An empty block is defined to return nil. In Squeak, it returns its last argument. This makes very little sense, and is different from other Smalltalks. I suppose you dare not change it, as who knows what code relies on this behavior. To confirm this, define the following method in any class

^[:x :y :z | ] value:1 value: 2 value: 3

Then create an instance and invoke it. It evaluates to 3 instead of nil.
EmptyBlockResult-M5793-Test.1.cs (1 KB) 01-01-70 00:33
EmptyBlockResult-M5793-PatchForOldCompiler.1.cs (2 KB) 01-01-70 00:33
EmptyBlockResult-M5793-Test.2.cs (1 KB) 01-01-70 00:33
EmptyBlockResult-M5793-PatchForOldCompiler.2.cs (2 KB) 01-01-70 00:33
nicolas cellier 09-27-07 20:51 Just to exercize, a patch for the old compiler.
Note that the NewCompiler already answer nil.
nicolas cellier 04-03-08 20:38 Ah Ah, stupid, just forgot to test if statements were empty...

A test.2.cs and patch.2.cs do it a little better.
nicolas cellier 05-12-14 19:46 Fixed in 4.6 trunk by Eliot's
http://source.squeak.org/trunk/Compiler-eem.280.mcz [^]
Some details in https://code.google.com/p/pharo/issues/detail?id=1614 [^]
7818 OS-Linux minor always 04-13-14 17:51 04-13-14 17:51 Stu normal new none none trunk open 0 Incorrect bpp calculation in sqCamera-linux.c Incorrect bpp calculation in sqCamera-linux.c.
There are also a couple of instances of trailing whitespace in the switch statement where this bug is found.
--- sqCamera-linux.c.orig Sun Apr 13 13:47:01 2014
+++ sqCamera-linux.c Sun Apr 13 13:48:25 2014
@@ -696,7 +696,7 @@
                bpp = 2;
          case V4L2_PIX_FMT_YUYV: /* printf("V4L2_PIX_FMT_YUYV\n"); */
- bpp = 4;
+ bpp = 2;
7816 VM minor always 04-05-14 15:41 04-06-14 16:12 lewis lewis normal assigned none none open 0 Update CameraPlugin for 64-bit VM The CameraPlugin causes VM crashes when used with Scratch on a VM that has been compiled in 64-bit mode. A VM installed with apt get on 64 bit Ubuntu are 64-bit VMs, so the problem affects Scratch users on 64-bit Ubuntu.
lewis 04-06-14 16:12 How to work around the problem on Ubuntu:

Date: Sun, 06 Apr 2014 10:41:08 -0300
From: Gustavo Duarte <gus.duarte@gmail.com>
To: vm-dev@lists.squeakfoundation.org
Subject: Re: [Vm-dev] Camera sig fault on 64 bits machines.

Hi Dave,

I followed your suggestion and could resolve this issue, thanks a lot.

Here the steps followed:

1) Uninstall, squeak-vm 64 bits comes with Ubuntu distribution, without its depends.

1) dpkg -r --force-no-depends squeak-vm

2) Download squeak-vm 32 bits.

wget http://www.squeakvm.org/unix/release/Squeak- [^]

sudo sh Squeak-

Choice as path prefix /usr instead default: /usr/local

3) Install 32 bits compatibility library:

sudo apt-get install ia32-libs

I know that is a workaround, the finally solution as you said, is update the plugins to working properly on 64 bit architectures.

Thank you very much !

7815 VM minor always 04-03-14 22:17 04-03-14 22:18 lewis lewis normal assigned none none open 0 Complete the integration of Scratch plugins for all platforms and VMs The Scratch plugins (that is
are not integrated into the SVN tree properly.

trunk/unix has all four; trunk/riscos has ScratchPlugin. trunk/Mac OS has none of them. trunk/win32 has just the CameraPlugin.
The Cog tree (which isn?t currently viewable via the web, by the way) appears not to have any of them for unix nor Mac OS - the win32
+directory is the same as for the plain interp and so is the RISCOS tree.
Reported on vm-dev: http://lists.squeakfoundation.org/pipermail/vm-dev/2014-April/014993.html [^]
3732 Hedgehog minor always 05-27-06 13:26 03-23-14 19:37 quiwox normal new none none open 0 Missing textures in CalmoPuzzleDemo. There are missing textures in CalmoPuzzleDemo at CroquetSource/Public Contributions : http://hedgehog.software.umn.edu:8888/@TIlzScmWkltEnLOf/GUNVDAJp [^] CalmoPuzzleDemo-gzs.2.mcz (7 KB) 01-01-70 00:33
CalmoPuzzleDemo-Textures-gzs.zip (29 KB) 01-01-70 00:33
CalmoPuzzleDemo-CalmoSoft.5.mcz (7 KB) 01-01-70 00:33
CalmoPuzzleTextures.zip (12 KB) 01-01-70 00:33
CalmoPuzzle_In_Croquet.png (342 KB) 01-01-70 00:33
quiwox 05-27-06 13:30 The attached CalmoPuzzleDemo-Textures-gzs.zip file contains the necessary textures.
CalmoSoft 03-23-14 14:43 Please use:
7813 Hedgehog minor always 03-23-14 11:07 03-23-14 19:34 CalmoSoft normal new none none open 0 Necessary Texture Files for CalmoSoft Puzzle Game Necessary Texture Files for CalmoSoft Puzzle Game CalmoPuzzleTextures.zip (12 KB) 01-01-70 00:33
CalmoPuzzleDemo-gzs.2.mcz (7 KB) 01-01-70 00:33
CalmoPuzzleDemo-CalmoSoft.5.mcz (7 KB) 01-01-70 00:33
CalmoPuzzle_In_Croquet.png (342 KB) 01-01-70 00:33
CalmoSoft 03-23-14 14:46 Please use:
7811 VM minor always 03-06-14 21:10 03-06-14 21:23 lewis lewis normal assigned none none open 0 squeak-vm: Fails to build with clang instead of gcc VM does not compile on clang compiler, affects Debian distribution Reported on vm-dev http://lists.squeakfoundation.org/pipermail/vm-dev/2014-March/014817.html [^]

Forwarded from Debian bug report

> Resent-From: Nicolas Sévelin-Radiguet <nicosr@free.fr>
> From: Nicolas Sévelin-Radiguet <nicosr@free.fr>
> Subject: Bug#740972: squeak-vm: Fails to build with clang instead of gcc
> Date: 6. März 2014 11:21:36 GMT-8
> Resent-To: debian-bugs-dist@lists.debian.org
> To: Debian Bug Tracking System <submit@bugs.debian.org>
> Resent-Cc: Debian Squeak Team <pkg-squeak-devel@lists.alioth.debian.org>
> Reply-To: Nicolas Sévelin-Radiguet <nicosr@free.fr>, 740972@bugs.debian.org
> Package: squeak-vm
> Version:
> Severity: minor
> Tags: patch
> User: pkg-llvm-team@lists.alioth.debian.org
> Usertags: clang-ftbfs
> Hello,
> Your package fails to build with clang instead of gcc. [-Wreturn-type]
> Buildlogs and patch are here:
> https://github.com/nonas/debian-clang/tree/master/buildlogs/squeak-vm [^]
> Regards,
> Nicolas
> -- System Information:
> Debian Release: jessie/sid
> APT prefers testing-updates
> APT policy: (500, 'testing-updates'), (500, 'testing')
> Architecture: amd64 (x86_64)
> Foreign Architectures: i386
> Kernel: Linux 3.12-1-amd64 (SMP w/4 CPU cores)
> Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/dash
nicolas cellier 03-06-14 21:23 The only errors I found while reading the report are:

/«PKGBUILDDIR»/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c:998:21: error: non-void function 'sound_StopRecording' should return a value [-Wreturn-type]
        if (!audioIn.open) return;
/«PKGBUILDDIR»/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c:1001:31: error: non-void function 'sound_StopRecording' should return a value [-Wreturn-type]
        if (NULL == audioIn.pa_conn) return;

Since it's not generated code, it shouldn't be very hard to fix...
7810 Morphic text always 02-06-14 08:43 02-06-14 16:08 vaidasd normal new none none trunk open 0 Cursor is positioned improperly for the underscore character '_'(asciiValue 95) Using default preferences paste the string '__________________________________' in workspace, and press End key. Cursor is positioned improperly for the underscore character '_'(asciiValue 95)Bitmap DejaVu Sans, all font sizes. Version 4.5-13671.
7809 System text always 02-06-14 08:27 02-06-14 16:07 vaidasd normal new none none trunk open 0 turning off bigDisplay preference does not return to the previous display settings Turning on an then off bigDisplay preference does not return to the initial font settings. Version 4.5-13671
3334 Morphic minor always 03-21-06 09:21 02-05-14 16:41 al low new 7014 none none 3.9 open 0 Preference browser displays buttons in old style n/a
tim 07-22-13 02:35 Good grief, it still does. Really ought to get fixed.
FrankShearar 02-05-14 16:41 Rewriting the UI construction logic to use ToolBuilder is (a) the right thing to do and (b) would fix this issue.
7808 Morphic minor always 02-04-14 21:25 02-04-14 21:26 tim normal new none none 4.4 open 0 PreferenceBrowser cleanups needed When checking out the 4.5 rc3 image -

One thing we probably ought to clean up at some point is the Preferences. There’s plenty of scope for confusion in the button row;
the ‘default’ button doesn’t set things to how the image is delivered - at the very least the flaps seem to turn on. (Looks like Preferences class>defaultValueTableForCurrentRelease would need whacking on)
‘save’ & ‘save to disk’ would seem redundant (I know they’re actually different but would any new user?)
similarly ‘load’ & ‘load from disk’
save & load to disk only load a specific file with no option to choose which one
the balloon help is sufficiently translucent as to be almost indecipherable
… and the text is often confused
the themes seem rather out of date - ‘out of the box’ is for 3.2? Wow.

I very, very, rarely touch preferences, which is why I don’t think I’ve really noticed this before. I’ll Mantisize the above.
7807 Morphic minor always 01-08-14 18:26 01-14-14 00:31 tim normal new none none 4.4 open 0 Morphic drag/drop methods with confusing code and comments After digging around a large number of drag/drop related methods I have
a) a rather better understanding of how it works
b) a small list of rather odd methods that seem in need of a moments consideration and probably improving.

There seems to be some confusion about the meaning and use of #isPartsBin[:] & #isPartsDonor[:], a rather confused PasteUpMorph>repelsMorph:event: (and #wantsDroppedMorph:event:), and the usual confused and/or outdated comments that mislead the reader.
The attached change set is a bunch of methods where I have simply commented what I suspect to be wrong or in need of improving. Just before a release is not a time to change a basic bit of code in PasteUpMorph without review. DragDropQuestions.1.cs (4 KB) 01-01-70 00:33
tim 01-14-14 00:31 A couple of extra uglinesses from Karl Ramberg-

A few comments:
CompoundTileMorph contain other morphs that wants drops, so I don't think you can reject drops to it.

Morph>>mouseDownPriority shows some of the confusion with isPartsBin and isPartsDonor

7806 Morphic minor always 01-08-14 00:56 01-08-14 01:10 seandenigris normal new none none trunk open 0 Text Morph Embedding Broken Squeak4.5 latest update: #13352

Text withAll: 'foo') , (Text string: '*' attribute: (TextAnchor new anchoredMorph: MenuIcons confirmIcon)) , (Text withAll: 'bar').
text asMorph openInHand.

The Morph contents are 'foo*bar' i.e. no icon
seandenigris 01-08-14 01:10 The method change that broke the feature in Pharo was: displayScannerFor:foreground:background:ignoreColorChanges:
7805 VM feature always 01-06-14 18:26 01-06-14 18:26 lewis lewis normal assigned none none open 0 Need simulation support for the BalloonEnginePlugin, FloatArrayPlugin & Matrix2x3Plugin primitives VM simulation support is not available for these plugins, apparently due to issues in simulating 32 bit float access. Reported on vm-dev:
http://lists.squeakfoundation.org/pipermail/vm-dev/2014-January/014417.html [^]
Feature request and background:
Date: Mon, 6 Jan 2014 09:30:17 -0800
From: Eliot Miranda <eliot.miranda@gmail.com>
To: Squeak Virtual Machine Development Discussion <vm-dev@lists.squeakfoundation.org>
Subject: [Vm-dev] Simulating the BalloonEnginePlugin, FloatArrayPlugin &
 Matrix2x3Plugin primitives

Hi All,

    I'm just revising plugin treatment in Spur and came across this old
snippet of mysterious code:

InterpreterSimulator>>loadNewPlugin: pluginString
| plugin simClass |
transcript cr; show:'Looking for module ', pluginString.
(#('FloatArrayPlugin' 'Matrix2x3Plugin')
includes: pluginString) ifTrue:
[transcript show: ' ... defeated'. ^ nil].

In the past I got as far as rewriting it to read...

InterpreterSimulator>>loadNewPlugin: pluginString
| plugin plugins simulatorClasses |
transcript cr; show: 'Looking for module ', pluginString.
"but *why*??"
(#('FloatArrayPlugin' 'Matrix2x3Plugin') includes: pluginString) ifTrue:
[transcript show: ' ... defeated'. ^nil].
plugins := InterpreterPlugin allSubclasses select: [:psc| psc moduleName
asString = pluginString asString].

In revising the code for Spur I removed the defeat code and found out more.
 It's essentially because the BalloonPlugin has difficulty simulating
accesses of 32-bit floats. If you simply defeat the code and let things
run soon you get failures in FloatArrayPlugin & Matrix2x3Plugin primitives.
 These can be fixed by implementing the following in the FloatArrayPlugin &

cCoerce: value to: cType
^cType = 'float'
ifTrue: [value asIEEE32BitWord]
ifFalse: [value]

But soon you hit more difficult failures in the BalloonEnginePlugin, e.g.

BalloonEngineBase>>transformPointX: xValue y: yValue into: dstPoint
"Transform srcPoint into dstPoint by using the currently loaded matrix"
"Note: This should be rewritten so that inlining works (e.g., removing
the declarations and adding argument coercions at the appropriate points)"
| x y transform |
<inline: true>
<var: #dstPoint type:'int *'>
<var: #xValue type: 'double '>
<var: #yValue type: 'double '>
<var: #transform type:'float *'>
transform := self edgeTransform.
x := ((((transform at: 0) * xValue) +
((transform at: 1) * yValue) +
(transform at: 2)) * self aaLevelGet asFloat) asInteger.
y := ((((transform at: 3) * xValue) +
((transform at: 4) * yValue) +
(transform at: 5)) * self aaLevelGet asFloat) asInteger.
dstPoint at: 0 put: x.
dstPoint at: 1 put: y.

where x and y end up being the integer representation of 64-bit floats
while dstPoint accepts the integer representation of 32-bit floats. At
least I think that's what's going on.

In any case I need to focus on Spur and can't spare the time to fix this.
 But I find it unsatisfactory. It means the VM simulation isn't accurate.
 In the simulation the primitives fail and Smalltalk code is run. In the
real VM the primitives work. And that's deeply unsatisfying.

So if there's anyone itching for a VM challenge try and make
the BalloonEnginePlugin, FloatArrayPlugin & Matrix2x3Plugin primitives
simulate correctly, removing the defeat code above. That would be a great
new year's gift.
7652 VM minor always 07-14-11 19:47 01-06-14 18:18 matthewf lewis normal assigned none none open 0 The idle process does not wake up when delays are scheduled, on linux I have a thread that sends network messages at a constant rate. it's supposed to send at about 100 packets per second (delay of 10ms). However, it always sends at 50 packets per second unless I move the mouse around. When moving the mouse around, it sends nearer it's desired frequency. Enabling higherPerformance does not help This is my VM: (standard interpreter 4.4.7 on ubuntu 11.04 linux, with a couple extra plugins for cobalt)

4.4.7-2357 #1 XShm Sun Jan 23 18:17:31 PST 2011 gcc 4.3.2
Linux vps2.piumarta.com 2.6.18-028stab053.10-ent #1 SMP Thu Feb 28 20:34:08 MSK 2008 i686 GNU/Linux
plugin path: ./bin/i686-pc-linux-gnu [default: /media/Knoppix/opencobalt-1.0alpha12-squeak16.fat/bin/i686-pc-linux-gnu/]
KenCausey 07-14-11 20:45 I could be mistaken but this seems somehow related to an issue we have at least seen on source.squeak.org and I suspect affects many Squeak websites occasionally.

What we have seen is that source.squeak.org will stop responding. If one simply connects to the image via RFB (aka VNC) and wiggles the mouse the system begins responding again normally and may do so for many weeks before this comes up again. Actually it has been a while since we have seen this behavior I think, I'm not sure what changed (poor memory).

matthewf 07-14-11 21:13 I was able to work around the issue and have processes run at full speed by commenting out #interCyclePause: in WorldState >> doOneCycleFor:

However, this makes squeak run at full cpu all the time. I noticed that squeak runs at full cpu anyway when the mouse is moving. not sure why
matthewf 07-14-11 21:21 If I start an infinite loop in a low priority process some other way (ui process or otherwise), my network sender process runs at full speed. I guess allowing the idle process to run causes this bug
matthewf 07-14-11 21:53 The maximum frequency the delay will run at normally is independent of the morphic event loop; the number 50fps seems to be a mere coincidence, as that is the default frequency the morphic event loop runs at. If I set the morphic event loop to wait 1 millisecond or 2000 milliseconds between runs, my delay will never wakeup more than 50 times per second
matthewf 07-14-11 22:09 The delay wakeup cap seems to actually be 60fps; it sometimes wakes up as many as 58.5 times per second if the processor is idling, but no more. This makes me suspect the VM relinquishPhysicalProcessor code or the Delay code

craig 07-14-11 22:32 Shouldn't the relinquish-processor primitive (230) make the next delay wakeup tick the most important consideration? Something like...

void relinquishPhysicalProcessor(void) {
        /* relinquishPhysicalProcessor */
        /* the next delay wakeup time */
        int nextWakeupTick = vm->getNextWakeupTick();
        int now = (vm->ioMicroMSecs() & 0x1fffffff);
        int timeoutInMilliseconds;
#ifdef UNIXISH
        struct timeval currentTime;
        struct timespec wakeupTime;
        if (nextWakeupTick <= now) {
                if (nextWakeupTick == 0)
                         * Timer interrupts have been disabled; wait
                         * for as long as possible before anyone might
                         * notice. Specifically, wait for one frame
                         * at a typical GUI frame rate (60 Hz).
                        timeoutInMilliseconds = (1000/60);
                         * The next delay wakeup time has passed and
                         * the system should resume as soon as
                         * possible.
                        timeoutInMilliseconds = 0;}
                timeoutInMilliseconds = nextWakeupTick - now;
#ifdef UNIXISH
        gettimeofday(&currentTime, NULL);
        wakeupTime.tv_nsec = (currentTime.tv_usec * 1000) + (timeoutInMilliseconds * 1000000);
        wakeupTime.tv_sec = currentTime.tv_sec + (wakeupTime.tv_nsec / 1000000000);
        wakeupTime.tv_nsec %= 1000000000;
matthewf 07-14-11 23:06 Here is a chunk of code you can evaluate in a workspace to see how often a delay is triggering. It should be triggering about 1000 times per second, but is actually triggering 30-40 times per second on my machine when idle, or 170-180 times per second when I keep the mouse in constant motion

| tally delay morph updateDelay |
tally := 0. delay := Delay forMilliseconds: 1.
updateDelay := Delay forMilliseconds: 1000.
morph := TextMorph new openInWorld.
[[tally := tally + 1. delay wait] repeat] forkAt: 44.
[[morph contents: tally printString. tally := 0. updateDelay wait] repeat] forkAt: 45.

(to stop the code, kill processes of priority 44, 45, and 35 in the process browser, and delete the morph)

If I start a low priority infinite loop to completely starve the idle process, the delay wakes up 995-998 times per second, which is good:

[[] repeat] forkAt: 35

Except that we like running at low cpu

craig 07-14-11 23:12 I tried your workspace code with a VM that uses my relinquish primitive. It's near 1000 all the time, whether I use the UI or not.
KenCausey 07-15-11 19:13 This issue is also being discussed on the vm-dev list. See http://lists.squeakfoundation.org/pipermail/vm-dev/2011-July/008811.html [^]
7804 Morphic minor always 01-03-14 02:26 01-03-14 02:26 tim normal new none none 4.4 open 0 Morphic list usage of #list: & #isThisEverCalled A number of #list: methods in some Morphic list related classes (PluggableListMorph & subclasses mostly) are tagged with #isThisEverCalled because they appear to be redundant code. Most sends of #list: are part of tool builder spec building. Many are in classes out of the PluggableListMorph hierarchy. The remaining ones are:-
AlternatePluggableListMorphOfMany (send to super/PluggableListMorph)
PluggableListMorphByItem sends to super (PLM)
PluggableListMOrphByItmePlus ditto

.. .and almost certainly can be removed. But it's too close to a release to do something that might just fuck the system.
7801 Environments minor always 12-22-13 14:55 12-22-13 14:55 FrankShearar normal new none none trunk open 0 SmalltalkImage >> #add:toList:after: assumes the root environment If a class from a non-"root" environment wants to add itself to the startup/shutdown lists, the above-mentioned method rejects the attempt because of a "Smalltalk globals includes: aClass" check.

This means that, for instance, you can't load Xtreams into an Environment, because XTIOHandle tried to register with the shutdown list.
7800 Environments minor always 12-20-13 21:58 12-20-13 21:58 FrankShearar normal new none none trunk open 0 Loading an MC package into a private Environment adds a global PackageInfo Loading an mcz into the Smalltalk globals Environment should definitely cause a globally visible event like the creation of a PackageInfo. However, this makes no sense for other Environments.
2237 Browser minor always 11-17-05 01:45 12-03-13 09:50 johnmci normal new none none 3.9 open 0 senders-of does not correctly setup selection range when finding messages of the form a:b: 0006696
if you have a method called
which calls a:b:
and you ask for senders of a:b:
It correctly shows a:, but when you select that method and the code responsible for finding a:b: actually
only finds on a: not a:*b: so in this case it selects the method name a: at the top. Then you have to hunt for the a:b: it should have shown.
tim 07-22-13 02:15 This would require some way of selecting the correct message that did not rely on simply scanning the text for the first match.

Although I'm no fan of the way Shout fiddles with my code, it seems to me it must have some functionality that could be bent to this purpose.
7795 text always 11-24-13 15:51 11-24-13 15:51 Nicolai Hess normal new none none open 0 current release at www.squeak.org 4.3 or 4.4? Two links at www.squeak.org/Download link to
http://ftp.squeak.org/4.3/Squeak-4.3-All-in-One.zip [^]

1. (At top) Fastest way to start is *Squeak All-in-One* distribution ...
2. Image file
This is the official Squeak release.

    *Squeak Release*

but the one link on the right side mentions Version 4.4 and links
to this version.
7792 VM minor always 10-15-13 15:25 10-20-13 15:49 FrankShearar FrankShearar normal resolved none none fixed 0 Implement primitiveQuit for the Interpreter VM Cog already implements this.

Image side caller of primitive: http://source.squeak.org/inbox/System-ul.528.mcz [^]
lewis 10-19-13 17:08 Tim has added the necessary updates to trunk/Cross and trunk/RiscOS, and support it is already present in trunk/iOS. The unix, win32, and Mac trees need the update, and VMMaker needs to adopt the quitPrimitive from Cog. No change is required for the /usr/local/bin/squeak script.
lewis 10-20-13 15:48 Updates have been completed for all platforms and VMM. Future builds will include this feature.
1372 TrueType minor always 06-23-05 17:20 09-30-13 23:22 bert tim normal assigned none none open 0 Fonts have invisible characters Try "(0 to: 255) asByteArray asString" - there are many blank glyphs
KenCausey 06-23-05 18:10 I tried this in 3.6, 3.8, and 3.9 and I guess I see what you mean in terms of there always being some ASCII characters that have no glyph, generally those that don't normally have a visual representation. Exactly which ones those are vary somewhat from image to image and in some cases some of those characters have a glyph which is an empty box. Are you just suggesting that that should be more consistently the case? That every character have some glyph even if it is just a box or other character representing the fact that character has no visual representation? I don't think you would want that to be true in many cases though, for example: \n, \r, \f, \t, \b.
bert 06-23-05 19:19 Yes I'd like to have at least an outlined box for each glyph. Even for those CRs, LFs etc, because normally these are not rendered - the character scanner advances the position instead. It still happens in some circumstances to get a control character into your string, like I pressed enter and got a character of value 3 in the sourcecode and the compiler rightfully complains - but you don't *see* anything wrong.
masm 07-02-05 02:47 Unprintable characters trouble the compiler.
Some unprintable characters are not 'seen' as blank spaces and when adjacent
to a token, like a selector, they become part of it. This is hard to spot.
bert 07-02-05 11:51 masm: That is indeed one of the problems. However, there is one legitimate blank character (char value 160), which is the non-breakable space. Not sure how to deal with that. As it happens, Apple Mail uses that character for indentation, so if I copy code from a Mail it won't compile :(
hitoro 08-28-05 12:58 It looks like the issue I reported (0001342).

Some glyphs don't have a representation while they should. Check the typographic glyphs; most are gone (“”—–‘’œ…). I really miss them.
1342 TrueType minor always 06-12-05 11:40 09-30-13 23:21 hitoro tim normal assigned none none 3.8 open 0 Support for typographic punctuation is gone It is not longer possible to insert bullets (•), dashes (–, —) and quotation marks (‘, ’, “, ”); these characters are displayed as hollow rectangles (TrueType fonts) or blank spaces (bitmap fonts). What puzzled me is that the guillemets are still there («»). Running Squeak 3.8 6665, Carbon Mac VM. No problem with a 3.7 image.
hitoro 06-12-05 11:41 Hum, I didn't select Etoys in the list...
hitoro 06-12-05 12:33 It seems to be a problem of mapping the characters. For example, the character code of a bullet is 149 (Mac encoding) but in the Unicode table, the character code is 8226.
6570 Graphics minor N/A 07-22-07 01:39 09-30-13 22:59 wiz tim normal assigned none none open 0 A Mother for font and font test problems A place to collect font related reports
wiz 09-09-07 03:22 Overview:

Fonts are in trouble.

As I18n took place strikefonts have taken a second seat to ttcfonts.

Several authors have made changes w/o understanding fully what underlies fonts and their protocol. Making assumtions that turn out to be incorrect.

3dot9 deepened the problem by adding stuff both from 3.8 squeakland and dgd's smalland branch w/o adaquate checks or tests for integration compatablitity.

I've tried to patch things by making assumptions based on some of the broken code. And those assuptions have proven incorrect and incomplete. The patches caused bugs to pop up in other places.

bugs found so far:
1) derived fonts have gross and obvious glitches.
2) default font assumptions can lead to messages like #ascent to have infinite recursion
3) font arrays and fonts are getting confused and substituted for each other leading to dnu's and worse.
4) testing of the fonts are causing font defaults to be changed but not reset.

Fonts could use help and a good overall code review.

Yours in service, --Jerome Peace
7788 Monticello minor always 09-20-13 11:02 09-20-13 11:02 FrankShearar avi normal assigned none none trunk open 0 MCConflict >> #chooseNewer doesn't always resolve conflicts It looks like the logic's not exhaustive:

    self isLocalNewer ifTrue: [ self chooseLocal ]
        ifFalse: [ self isRemoteNewer ifTrue: [ self chooseRemote ]]

Except, if self isLocalNewer not and: [self isRemoteNewer not] then you haven't chosen anything.
FrankShearar 09-20-13 11:02 This is not a theoretical problem: I've seen it breaking CI's update-image.st script.
7787 Monticello minor always 09-12-13 08:52 09-12-13 08:52 FrankShearar avi normal assigned none none trunk open 0 MCClassDefinition >> #actualClass uses Smalltalk, not an environment As above. However, note that definition-like things (this guy, ChangeRecord, ...) should perhaps not reference an Environment AT ALL, but simply changes. Then fileIn procedures that know a target Environment take care of resolving #realClass, #actualClass and similar things.
7786 Etoys minor always 09-05-13 23:58 09-05-13 23:58 jmckeon normal new none none 4.4 open 0 Changing a user defined variable's value type raises an error Add a variable to a player, click the variable menu and select "change value type".
If Preferences>>allowEToysCustomEvents is false, Vocabulary class>>typeChoices attempts to send remove:ifAbsent: to the IdentityDictionary returned from allStandardVocabularies.
Fix added to the inbox
7785 VM minor always 08-12-13 18:19 08-28-13 18:04 lewis eem normal assigned none none fixed 0 RePlugin patch for pcre from Debian bug report #710375 Reported here:
http://lists.squeakfoundation.org/pipermail/vm-dev/2013-August/013368.html [^]
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=710375 [^]

squeak-vm uses the system pcre library which does not provide the
prce_info anymore:
       int pcre_fullinfo(const pcre *code, const pcre_extra *extra,
            int what, void *where);

       The pcre_fullinfo() function returns information about a
compiled pat-
       tern. It replaces the pcre_info() function, which was removed
from the
       library at version 8.30, after more than 10 years of obsolescence.

A patch has been provided by a Debian maintainer, but may need to be reimplemented in the plugin slang.
lewis 08-15-13 02:47 RePlugin was written by Andrew C. Greenberg. It consists of a VM plugin in package RegexPlugin, some interface classes in package Regex-Base, and a test suite in package Regex-tests.

An overview is on the Swiki at http://wiki.squeak.org/squeak/558. [^]

The RePlugin distribution is on SqueakMap as package "Regular Expression Plugin". The most recent update is version 3.31, which is a SAR distribution containing the plugin, the image support code, the unit tests, and documention. The package is fully functional and all tests are green when running on a 32 bit VM (e.g. an interpreter VM from www.squeakvm.org/unix, or Cog if the plugin is present).

The RePlugin is now part of the VMMaker package, so the RegexPlugin package from the SqueakMap distribution is superceded by the RePlugin VMMaker-Plugins.

RePlugin also requires updates for 32/64 bit compilation. It crashes the VM when compiled in 64-bit mode.
lewis 08-15-13 02:50 The patch provided for Debian build resolves the linker errors by disabling a primitive. However, the primitive still requires a proper fix in VMMaker to use the new pcre_fullinfo() function rather than the obsolete pcre_info().
lewis 08-18-13 15:43 Source code for an early version of the PCRE is in platforms/Cross/plugins/RePlugin. The VM is compiled with this code, rather than using OS supplied libraries. The link error reported in the Debian bug report is probably a result of link-time confusion between the OS supplied library and the code in our platforms/Cross tree.

We should stop using a local (and obsolete) version of the PCRE, and begin linking directly to the platform supplied library when present. Unix/Linux systems are sure to provide a PCRE implementation, but I don't know the status with respect to Windows, iOS, RiscOS etc.
lewis 08-18-13 15:45 The platforms/win32 and platforms/iOS both provide RePlugin.c files that have been generated from the Smalltalk plugin, which is now maintained in VMMaker. These generated sources should be removed from the platforms trees.
lewis 08-18-13 15:50 Note - the original platforms source for PCRE in platforms/Cross/RePlugin contains the then-current implementations of the pcre_info() and pcre_fullinfo() functions. Documentation of the original pcre_info() function is not readily available, so use this local code as reference for how to update the RePlugin in VMMaker to use the pcre_fullinfo() function.
eem 08-28-13 18:04 Fixed in Cog and merged into VMMaker-eem.323. Also fixed arg count of primPCREExecfromto
and compilation warnings in rePluginFree: & rePluginMalloc:.
7784 SARInstaller crash always 08-08-13 19:34 08-08-13 19:34 tim normal new none none 4.4 open 0 SARInstaller>fileInMonticelloPackageNamed: sends unimplemented message #readStreamDo: Stumbled on this as part of other work - looks like FileStream>readStreamDo: must have got deleted some time ago.
4785 Kernel minor always 09-09-06 12:49 08-05-13 18:03 Krivanek FrankShearar normal resolved none none 3.10 fixed 0 [KernelImageOverride] Utilities class informUserDuring: Utilities class >> informUserDuring:
uses ugly implementation with isMorphic message. Should call UIManager

UIManager default informUserDuring: aBlock

Unlike Utilities class >> informUser:during: this message is used in the kernel a lot.
FrankShearar 08-05-13 18:03 ar fixed this back in 2009.
4783 Kernel minor always 09-09-06 12:37 08-05-13 18:01 Krivanek FrankShearar normal resolved none none 3.10 fixed 0 [KernelImageOverride] Utilities class informUser:during: Utilities class >> informUser:during:
uses ugly implementation with Smalltalk isMorphic and it should be replaced by UIManager method. Then also is not necesary to have this method in Utilities.

UIManager default informUser: aString during: aBlock

Then it probably should be removed from the kernel

FrankShearar 08-05-13 18:01 ar fixed this back in 2009.
4795 Kernel minor always 09-09-06 14:28 08-05-13 17:58 Krivanek FrankShearar normal resolved none none 3.10 fixed 0 [KernelImageOverride] SysntaxErrorNotification defaultAction SysntaxErrorNotification >> defaultAction


    ^ToolSet debugSyntaxError: self



    UIManager default syntaxErrorNotificationDefaultAction: self

dependent on Tools. It should be override of Tools package. Mabye rising of unhandled error will be better solution than special UIManager message.
FrankShearar 08-05-13 17:58 I've split the class across Compiler and System by moving the #defaultAction to the System package. This way System overrides/monkey-patches Compiler.

System-fbs.579 & Compiler-fbs.265.
4816 Kernel minor always 09-09-06 16:41 08-05-13 17:42 Krivanek FrankShearar normal resolved none none fixed 0 [KernelImageOverride] Locale class localeChanged Locale class >> localeChanged


    #(#ParagraphEditor #BitEditor #FormEditor #StandardSystemController )
        do: [:key | Smalltalk
                at: key
                ifPresent: [:class | class initialize]].
    StrikeFont localeChanged.
    PartsBin localeChanged.
    Project localeChanged.
    PaintBoxMorph localeChanged.
    ColorPickerMorph localeChanged.
    Preferences localeChanged


        do: [:key | Smalltalk
                at: key
                ifPresent: [:class | class initialize]].
    StrikeFont localeChanged.
    Preferences localeChanged

Ugly code, we need refactoring with some registry of classes that need to process the change of locale.
FrankShearar 08-05-13 17:42 Fixed in System-fbs.556.
4817 Kernel minor always 09-09-06 16:43 08-05-13 17:40 Krivanek FrankShearar normal resolved none none 3.10 fixed 0 [KernelImageOverride] LanguageEnvironment class startUp LanguageEnvironment class >> startUp



    self clearDefault.
    Clipboard startUp.
    HandMorph startUp.



    self clearDefault.
    Clipboard startUp.

Morphic dependent code
FrankShearar 08-05-13 17:40 I completely redid this in Multilingual-fbs.165.
7783 Installer feature always 08-05-13 14:59 08-05-13 14:59 FrankShearar normal new none none trunk open 0 Support SmalltalkHub We want something so that we can say

Installer stHub user: 'Foo' project: 'Bar'
1554 Kernel minor always 07-26-05 19:39 07-28-13 14:57 KenCausey normal resolved none none trunk fixed 0 [FIX] ClassVarsFix-petervr-v2 for compiler class var & global var shadowing issue from preamble:

"Change Set: ClassVarsFix-petervr-v2
Date: 9 October 2003
Author: Peter van Rooijen

fixes the lookup of class variables.
previously, inherited class variables
did not shadow other shared variables.

v2 - minor improvements"!
ClassVarsFix-petervr-v2.cs.gz (1 KB) 01-01-70 00:33
Tests-ClassVarsFix.st.gz (1 KB) 01-01-70 00:33
KenCausey 07-26-05 19:41 "Peter van Rooijen" <squeak@vanrooijen.com>:

"I added some SUnit tests to demonstrate the bug and give credibility to the

Only two of the tests fail in an unfixed image. The rest serve as regression

All the tests pass after the fix is installed.

I added the tests as a file-out. I tried filing it into a change set, but
doing that lost the class comment."

(attaching Tests-ClassVarsFix.st.gz)
KenCausey 07-26-05 19:44 marcus@ira.uka.de:

"See the discussion:

http://lists.squeakfoundation.org/pipermail/squeak-dev/2003-October/068300.html [^]
KenCausey 07-26-05 19:47 I filed in the test into a 3.8-6665-basic image and 2 out of the 10 tests failed. I then filed in the fix changeset and ran the tests again and all 10 passed.
nicolas cellier 07-28-13 14:54 The tests have been loaded in Squeak4.5 Trunk http://source.squeak.org/trunk/KernelTests-nice.253.mcz [^]
The lookup workaround has been loaded in Trunk http://source.squeak.org/trunk/Kernel-nice.797.mcz [^]

4802 Kernel minor always 09-09-06 15:00 07-25-13 10:57 Krivanek normal new none none 3.10 open 0 [KernelImageOverride] SmalltalkImage fixObsoleteReferences SmalltalkImage >> fixObsoleteReferences

The code
SystemNavigation default obsoleteBehaviors inspect.
was commented. Tools (inspector) dependet. Maybe the new special UIManager message for general object inspecting/exploring will be useful.
FrankShearar 07-25-13 10:57 I can see the problem - Object >> #inspect is defined in the Tools package while this method's in the System package, so if you had an image with System loaded but not Tools, this would fail.

But I don't see how to fix the problem.
4806 Kernel minor always 09-09-06 15:48 07-25-13 10:25 Krivanek FrankShearar normal resolved none none 3.10 no change required 0 [KernelImageOverride] ProgressInitiationException defaultAction ProgressInitiationException >> defaultAction


    Smalltalk isMorphic
        ifTrue: [self defaultMorphicAction]
        ifFalse: [self defaultMVCAction].


    UIManager default progressInitiationExceptionDefaultAction: self

UI dependent code replaced with the new UIManager message.
FrankShearar 07-25-13 10:25 Fixed sometime in 2011.
4827 Kernel minor always 09-09-06 17:30 07-25-13 10:24 Krivanek FrankShearar normal resolved none none 3.10 no change required 0 [KernelImageOverride] FileExistsException defaultAction FileExistsException >> defaultAction


    "The default action taken if the exception is signaled."

    ^self readOnly
        ifTrue: [StandardFileStream readOnlyFileDoesNotExistUserHandling: self fileName]
        ifFalse: [StandardFileStream fileDoesNotExistUserHandling: self fileName]


    "The default action taken if the exception is signaled."

    ^ UIManager default fileDoesNotExistsDefaultAction: self

Maybe the rising of unhandled error will be better solution for KI than special UIManager message
FrankShearar 07-25-13 10:24 Files-fbs.125 and System-fbs.563 address this by moving the #defaultAction to the System package.
4829 Kernel minor always 09-09-06 17:37 07-25-13 10:22 Krivanek FrankShearar normal resolved none none 3.10 no change required 0 [KernelImageOverride] FileDirectory rename:toBe: FileDirectory >> rename:toBe:


rename: oldFileName toBe: newFileName
    | selection oldName newName |
    "Rename the file of the given name to the new name. Fail if there is no file of the old name or if there is an existing file with the new name."
    "Modified for retry after GC ar 3/21/98 18:09"
    oldName := self fullNameFor: oldFileName.
    newName := self fullNameFor: newFileName.
        retryWithGC:[self primRename: oldName asVmPathName to: newName asVmPathName]
        until:[:result| result notNil]
        forFileNamed: oldName) ~~ nil ifTrue:[^self].
    (self fileExists: oldFileName) ifFalse:[
        ^self error:'Attempt to rename a non-existent file'.
    (self fileExists: newFileName) ifTrue:[
        selection := (PopUpMenu labels:
'delete old version
                startUpWithCaption: 'Trying to rename a file to be
', newFileName , '
and it already exists.'.
        selection = 1 ifTrue:
            [self deleteFileNamed: newFileName.
            ^ self rename: oldFileName toBe: newFileName]].
    ^self error:'Failed to rename file'.


rename: oldFileName toBe: newFileName
    | selection oldName newName |
    "Rename the file of the given name to the new name. Fail if there is no file of the old name or if there is an existing file with the new name."
    "Modified for retry after GC ar 3/21/98 18:09"
    oldName := self fullNameFor: oldFileName.
    newName := self fullNameFor: newFileName.
        retryWithGC:[self primRename: oldName asVmPathName to: newName asVmPathName]
        until:[:result| result notNil]
        forFileNamed: oldName) ~~ nil ifTrue:[^self].
    (self fileExists: oldFileName) ifFalse:[
        ^self error:'Attempt to rename a non-existent file'.
    (self fileExists: newFileName) ifTrue:[
        selection := UIManager default chooseFrom: #('delete old version' 'cancel') values: #(1 2) title: 'Trying to rename a file to be
', newFileName , '
and it already exists.'..
        selection = 1 ifTrue:
            [self deleteFileNamed: newFileName.
            ^ self rename: oldFileName toBe: newFileName]].
    ^self error:'Failed to rename file'.

UI dependent code replaced with UIManager message
FrankShearar 07-25-13 10:22 I replaced the UI reference with a resumable exception, ReplaceExistingFileException, in Files-fbs.125.
7782 CI minor always 07-25-13 10:17 07-25-13 10:17 FrankShearar FrankShearar normal assigned none none trunk open 0 Intermittent build failures because http://build.squeak.org/job/SqueakTrunk/472/testReport/junit/TraitsTests.Kernel/PureBehaviorTest/testUpdateWhenLocalMethodRemoved/ [^] shows a weird error.

Something goes wrong with the sourceStream of the Compiler. I have an idea it's something to do with a RemoteString trying to read out the changes file and borking. Sadly, I don't remember the exact details. Could it have been with a malformed timestamp?
C2 class(ClassDescription)>>traitAddSelector:withMethod:
[] in C2 class(ClassDescription)>>installTraitMethodDict:
[] in Dictionary>>keysAndValuesDo:
C2 class(ClassDescription)>>installTraitMethodDict:
C2 class(ClassDescription)>>installTraitsFrom:
C2 class(ClassDescription)>>updateTraits
[] in Trait(TraitDescription)>>installTraitsFrom:
[] in Trait(TraitDescription)>>installTraitsFrom:
Trait class>>named:uses:category:env:
[] in TraitsResource>>setUp
TraitsResource class(Behavior)>>new
TraitsResource class(TestResource class)>>current
TraitsResource class>>resetIfDirty
7781 Tools minor always 07-24-13 21:16 07-24-13 21:16 FrankShearar normal new none none trunk open 0 Weird render bug I just noticed this in the dependency browser. Note the right end of the top line, and the left part of the next line. The "withStamp:" is my favourite, where we have half a word normal+blue, and the other half black+bold. The bug disappears as soon as I widen the codepane.

I can't reproduce the bug by narrowing the codepane though: the text correctly word-wraps.
weird-text-render-bug.png (27 KB) 01-01-70 00:33
6894 Kernel major always 02-11-08 02:26 07-23-13 11:20 umejava normal feedback none none 3.10 fixed 0 StartUpList order is broken after the Delay patch installation If you install DelayStartup changeSet in Squeak, LanguageEnvironment is placed after FileDirectory in StartUpList.
However, LanguageEnvironment should precede FileDirectory in start up process, because FileDirectory class >>startUp relies on encoded pathname which must be configured by LanguageEnvironment.
This order is dangerous because Squeak fails to start if you move the image to other encoded path platforms (eg. from Mac to Windows).

I submit a patch for fix this order.
3.8.2 & 3.10 has bad ordered list, because of the DelayStartup patch. FixOrderOfRegisteringStartUpList-mu.1.cs (2 KB) 01-01-70 00:33
Keith_Hodges 02-11-08 03:23 "fix begin"
Installer mantis bug:6894 fix: 'FixOrderOfRegisteringStartUpList-mu.1.cs'.
"fix end"
tim 07-22-13 02:56 FileDirectory still precedes LanguageEnvironment in a 4.5 image, so if this is important, it's still broken
umejava 07-23-13 01:45 It became less important because recent Win32 VM uses UTF8 path encoding and LanguageEnvironment class>>defaultFileNameConverter was fixed for that (ar 6/3/2007).

But Latin2Environment class>>fileNameConverterClass still returns legacy path converter class, so it could still be a problem. (I think it is minor one, because Latin2Environment user is very rare. Class comment says "so far nobody seriously needed it").
4782 Kernel minor always 09-09-06 12:28 07-22-13 10:10 Krivanek FrankShearar normal resolved none none 3.10 fixed 0 [KernelImageOverride] Warning defaultAction The current implementation of Warning>>defaultAction is dependent on ToolSet and it starts debugger. The kerenl image doesn't contain tools (including debugger) so the implementation in KI only rises unhandled error (UnhandledError signalForException: self). So it should be override of tools package or it should call special UIManager method. I prefert the first solution.
FrankShearar 07-22-13 10:10 The solution is to move #defaultAction into System somewhere. That breaks the Kernel->System dependency.

Kernel-fbs.793 and System-fbs.572 fix this problem.
6626 Tools minor always 08-16-07 16:08 07-22-13 02:44 Keith_Hodges cwp normal assigned none none 3.10 open 0 Fixes for Universes Collect fixes for universes here. UniversesMCAndProvidesPatch.1.cs (1 KB) 01-01-70 00:33
UniversesMCAndProvidesPatch.2.cs (1 KB) 01-01-70 00:33
UniversesMCAndProvidesPatch.3.cs (1 KB) 01-01-70 00:33
3216 Morphic minor always 03-02-06 22:36 07-22-13 02:32 wiz normal new none none 3.9 open 0 Typing Cmd-k while over the world is frustratingly and confusingly context sensative. In a fresh Squeak 7004.

Put the mouse of a clear spot on world desktop. Type Cmd-k
A workspace comes up.
Type it again. Another workspace.
Now move the cursor over one of the workspaces and move it back to its original spot.
Type Cmd-k. Instead of a workspace a font type menu pops up.
This is annoying.

I haven't looked at the code. But it would seem that leaving a window morph should clear the keyboard focus so that the font menu does not come up out of context.
wiz 03-19-06 02:59 Some clues and analysis.

There are two aspects to this annoyance.
Cmd-k means one thing when the world has the focus and another when TextMorph/Textmorph for edit view has focus.

A text morph in an active window gets focus on mouseEnter but does not release it on mouse exit.

It is not possible to tell by cursor position whether the world or a recently active textmorph has the focus.

The text morph retaining the focus has the benifit that typing will go into the last active paragraph. That is a GOOD thing IMHO.

So the problem will have to be solved or not by binding the opening of a workspace to some other gesture. Or something else that does not permanently affect focus.

Note that moving over a PLM from a TextMorph will change the focus. And moving from the PLM to the world will nil out the focus.

This seems inconsistant with the TextMorph retaining the focus. And I would consider that inconsistency a bug or at least a mal feature. It prevents the user from achieving a useful model of whats going on in their head. What happens all depends on what path the mouse has taken.

That's all for now.
tim 07-22-13 02:32 I agree it is poor UI practice.
7780 Monticello major always 07-21-13 11:18 07-21-13 11:18 FrankShearar avi high assigned none none 4.4 open 0 Monticello can't handle redirections http://code.google.com/p/metacello/issues/detail?id=185 [^] describes bootstrapping problems for Metacello, because 4.4 tries to access the old SS3 URLs, which redirect to the new SS3 locations. 4.4 and 4.5 don't (AFAIK) handle HTTP 3xx messages, and bail.
1300 Morphic minor always 06-02-05 17:11 07-21-13 03:23 KenCausey normal confirmed none none 3.9 open 0 ComicSanMS not working ComicSansMS is listed in the font and style lists but I can't seem to get it to work in either 3.9-6648 or 3.8-6665. Is it perhaps removed from the image but still in the list accidentally?
tim 07-21-13 00:08 It doesn't actually cause an error report in 4.5-12641 but the font proffered sure as hell ain't actually Comic SansMS but looks quite like bolded BitStreamVeraSans to me.
tim 07-21-13 00:19 Oh and indeed a quick inspect of TextConstants shows that the TextStyle named ComicSansMS in fact has 5 BitStreamVeraSans fonts, all bolded in sizes 6 9 11 17 & 26. So that's why it looked like that.
What happened to good old comic-sans? How can I write comically insane emails about how I've found a disproof of {choose well-established science here} without it installed properly?
lewis 07-21-13 03:23 I believe that there may be copyright issues with ComicSansMS that prevent it being distributed in the image. Most likely the real ComicSansMS was replaced with a placeholder font for this reason. The font list should probably be updated to reflect this.

Release notes for Squeak 2.0 are at the bottom of this swiki page: http://wiki.squeak.org/squeak/5809. [^] Quoting from that page:

"NOTE: The Comic Sans font included in this release is copyright: © 1997 Microsoft Corporation. All rights reserved. Use is governed by the agreement found at
http://www.microsoft.com/typography/fontpack/eula.htm [^]
Copies of this font may not be distributed for profit either on a standalone basis or included as part of your own product. It is our intention to replace this font with a public domain font in the near future."
1792 Multilingual minor always 09-13-05 20:01 07-21-13 02:48 bert bert normal assigned none none 3.8 open 0 UTF8TextConverter incorrectly reads malformed multi-byte sequences In an UTF8 multi-byte sequence, the second to last byte need to be of the form "10xxxxxx". This is not checked for by the UTF8TextConverter. It just reads those bytes. However, it must not interpret those bytes as multi-byte sequence, but rather start a new character there. Otherwise, valid characters are skipped.
tim 07-21-13 02:48 Does it still do this?
7779 Morphic minor always 07-16-13 23:12 07-16-13 23:12 tim normal new none none 4.4 open 0 TwoWayScrollPane is obsolete but still used as active According to the comment:-

"TwoWayScrollPane is now obsolete. You should be able to use ScrollPane to do both vertical and horizontal scrolling.

As an example, see Morph>>inATwoWayScrollPane and change the first line to create a ScrollPane instead of a TwoWayScrollPane. It will still work."
And indeed it does. We should deprecate/remove/whatever this and mixup the vestigial usages.
7778 Tools minor always 07-16-13 20:59 07-16-13 20:59 FrankShearar normal new none none trunk open 0 ArchiveViewer open across saved/closed/reopened image fails "Error: stream missing or closed" because, presumably, the FileStream closed during image shutdown. It would be really nice for it to quietly reopen the file, if possible.
7777 Network minor always 07-12-13 22:15 07-12-13 22:15 tim normal new none none 4.4 open 0 HTTPSocket httpJpeg: & httpGif: use archaic api for image decoding HTTPSocket methods httpGif: & httpJpeg: seem to use rather archaic messages to get the images decoded.

I suspect that it would be cleaner to replace
httpJpeg: url
    "Fetch the given URL, parse it using the JPEG reader, and return the resulting Form."

    | doc ggg |
    doc := self httpGet: url.
    doc binary; reset.
    (ggg := JPEGReadWriter new) setStream: doc.
    ^ ggg nextImage.

with something more like
httpJpeg: url
    "Fetch the given URL, parse it using the JPEG reader, and return the resulting Form."

    | doc |
    doc := self httpGet: url.
    doc binary; reset.
    (ImageReadWriter formFromStream: doc) nextImage.

for example
7776 SUnit feature always 07-11-13 09:12 07-11-13 19:01 FrankShearar normal new none none trunk open 0 Investigate outsourcing SUnit to SUnit 5.0 This would entail removing SUnit and all test packages from the base trunk image, and making #loadWellKnownPackages pull in SUnit from Jan Vrany's repo.
5205 Kernel major always 10-09-06 05:13 06-22-13 00:23 wiz normal resolved none none 3.10 open 0 Versions, sources, and changes. Repairing the current system to eliminate limitations. The problem:

Squeak periodically runs out of room in the source and change files.
The number of files are currently fixed at two.
The size of each file is limited at 32M each.
Changes can only be added to the second file.

While compressing changes and sources works for distibution, not having an image of squeak with the history of all changes from the current source severely hampers maintenence and repair.

Conclusion: Squeak needs to have a version source system that does not have these gross limitations.
So what to do about them.

See 0004369 for an enhancement that removes the file size limitation by using the adjunct class to compliled method to reference larger source and changes files.

I'm about to argue that this alone is not the best way to solve the problem stated above.

The essence of a good solution for me would allow a squeak to have several levels of versions. Each version level would have a source or changes file(s) connected to it. You could compress the lowest level of changes into the next higher version.

The other orthoganal aspect of the solution is rather than letting the file size get too large a source or change 'file' would actually be a series of modestly sized files. Part 1, part 2, part 3. etc.

Only the growth tip of the changes file changes. So this would allow the separate distribution of an image and (small) changetip with the option of downloading the unchanging sources once when necessary. We do this now by maintaining the sources separate from the changes file. This method would just be an extention of that.

The above is the needfully vague user story. The details need to be fleshed out in the implementatiion.

I understand the same mechanism that Klaus used to suggest the 512M files could be used to extend sources.

The main challenge would be working out a useable naming scheme for the files.

Squeak has a wonderful version numbering system already in place that can be used to generate levels.

The other necessary challenge is to build this scheme to be as friendly to the past method of doing sources and changes as possible. It will help greatly if old sources and changes are still referencable from within the new scheme of things.

I leave this problem here for now in hopes of feedback and support. I've have put the major label on it because it represents a major change and if it is to do the most good the sooner a solution is incorperated the more good it will do.

ExpandedSourceFileArray-part1-dtl.2.cs (20 KB) 01-01-70 00:33
ExpandedSourceFileArray-part2-dtl.2.cs (1 KB) 01-01-70 00:33
wiz 12-13-06 10:53 Hi Tim,
Thanks for assigning yourself to this.
The next good step to take would be to post whatever code you've got so far here.

I'll have some time over Xmas to persue my curiosity. And the more data I can give it the better it will serve me.

tim 01-11-07 10:34 Text of email I sent on jan 10 2007 hoping to spark some discussion of ways to proceed:-
    From: tim@rowledge.org
    Subject: Re: Version Histories (was Whats Happening with 3.10. etc.)
    Date: January 10, 2007 11:14:09 PM PST (CA)
    To: squeak-dev@lists.squeakfoundation.org

Here is my schema, such as it is thus far, for improving the source referencing. It's not complete. I need some suggestions for ways to tackle a few items.

The problem we face is that a lot needs to be changed in order to use anything other than indices into file; so many facilities rely upon it. Some serious refactoring would be needed in assorted changelist, version listing etc methods. There are complications in ImageSegment code too. RemoteString is pretty yucky. Class comments are also mixed up in file/index encoding assumptions. All the source compression, tempname-in-method etc code will need altering.

During the writing (and indeed installing later) of the code we need all our normal tools to keep working so we can stay sane while doing the writing.

The basic idea is to add a proper oop for a source reference object so that we can later implement classes that use a database, a web search, access multiple files, decompile, guess or whatever. Initially I propose simply using an integer with a simple encoding scheme (not the rather covoluted one currently in use - take a look at StandardSourceFileArray>fileIndexFromSourcePointer: and friends) and just reusing the files.

First possibly contentious idea
Do this work in a 3.8.1 image to avoid the change in sources/changes files done during the 3.9 cycle and some issues with the introduction of Traits. I am *not* suggesting abandoning all the hard work in 3.9 and anyone implying that I did so will get a late night visitation. You Don't Want That.
*After* incorporating the improved source referencing, add the 3.9 packages but leave out the source condensing step(s). This would leave the SqueakV3.sources file untouched and could either leave us with a changes file that is simply appended to (and obviously quite big) or slightly reformatted (and still pretty big).

Step 1
Add a new source reference ivar to the method properties object that all methods now have. Well, except that method properties were added somewhere during 3.9 - so they'd have to be added early. Drat. Ideas on the minimum disruptive way to add this?

Step 2
Add new method creation methods that do not use the trailerBytes stuff. We are not using them yet...

Step 3
Change source access method(s) to check the value of the source reference in the methodProperties and use the 'old' access if it is nil - which of course it is for now. Also change endPC similarly.

Step 4
change #generate methods to refer to a global flag to say whether they use trailerbytes or not. Set the flag *before* that... DAMHIKT!

Step 5
A big do-it to flip the global flag, recompile all methods and thereby set the new shiny source pointers. This is where things can get very complicated. We have to decide what to do about the changes file and all those historical versions.
a) we could effectively condenseSources so that there is no need to worry about handling encrypted pointers to older versions. This would of course mean a new .sources file.
b) we could condenseChanges so that any methods in the changelog that are also in the old sources file have a correct back pointer, thus losing most but not all history.
c) we could try to be very clever and copy the entire history chain for each method across to a new changes file, keeping history.
d) we could be insane and try to make code that works out when a history pointer is 'old format' and still handle it and then just append new format sources to the current changes. I'm not going to write that one myself...

Step 6
change the #generate methods to ignore trailerbytes completely, drop the global flag and remove it
remove all the redundant method creation methods etc

Step 7
rework ImageSegment, source code compression, abandonSources, etc etc. Ideas?

There is a *lot* needing changing to do this well. I'm horrified how poorly factored and written some of this core code is and how it has just accreted more and more crap over the last few years. Yuck. Yuck. Bad taste in mouth.

tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim [^]
Strange OpCodes: EFBI: Emulate Five-volt Battery Intermittently
wiz 01-19-07 10:09 Hi Tim,

In thinking about a transition stratagy here is what I've come up with so far.

Its a somewhat vauge stratagy but useful because it works within the framework that exists.

1) keep the oldest two source/change files limited to their current size.
2) Use some values of the prior pointer as an extention flag.
the prior pointer in the range p < n or p > max - n where n is some number 1 < n < about 10 would give you lots of flags.

The presence of these values in the pointer field tells you the distinction between old way to retreive things or new way.

Then just wrap a filter around the things that use the prior pointers.

if the pointer is a normal value do what has always been done.

If it is a special value use the extended scheme to find recent changes.

The advantage is it would give a chance to add the new stuff in while still using the old stuff. Which has been doing its job up until recently.

It would allow additional change file parts to take up the load of the overflow changes.

When you get to a point that you have all the changes stuff in the new format you can set n higher so that everything filters into the new scheme.

At some point you have a safe point at which to remove the old now vestigial code in a clean up phase.

There should be some way to get to a point where versions of code exist in both the old and new format at the same time.

And you could probably gen up some exhaustive test to make sure you get
both the old scheme and new scheme to give equivalent answers to queries for versions.

This is a slow cautious way to get from scheme a to scheme b with both of them existing side by side.

That's the current thinking.

Yours in service, --Jerome Peace
wiz 01-19-07 10:13 Reminder sent to: tim|
lewis 12-27-09 19:03 Uploaded two changes sets that correspond to the changes added to Squeak trunk on 26-Dec-2009:

These changes take advantage of the new CompiledMethodTrailer to permit essentially unlimited expansion of the sources and changes files, and are fully backward compatible with the traditional StandardSourceFileArray.
wiz 12-30-09 06:07 Hi Mr. Lewis,

Thanks for addressing this issue.

 I agree that not having the limit of 32k on the source and changes files will improve things marginally.

 I am still disturbed by two (missing) things.

 I ask all who sumbit changes for a test that fails before the patch and passes after it. This does not have to be a catastrophic failure. Simple something that proves the patch changes something that needed changing. It might simply be a test for the presence of the new classes. It would be even better if something substantial could be proven with the tests. (Very short of playing with 32M+ files let alone 512M. Test like those fall into the realm of acceptance tests. I am looking more for sunit and regression tests here.) Beyond guidance they will guard against future changes reverting things. The change process tends to let things fall through the cracks.

 The second missing thing is removing the limitation of one change file per image. There should be a way to have a change file per version level. Whole numbers, one decimal, two decimals etc.

The point being that when you ship an image at a certain version level you can ship just the image and a small changes file associated with the image. Other level of changes would not be affected. If someone is getting a new image they would need all the version levels of changes that go with that image that the have not already downloaded.

 The change files mimic the version tree.

 My belief is that the 512M scheme is missing this vital component. Experience has shown me that large files are potential problems in their own right. A small corruption in one part can kerflarg a great deal of data. Smaller more modular files usually fare better.

 This scheme assumes there would be other tools in place to manage the small files. Different levels of consolidation and redundancy removal. I am not addressing that here because that could be addressed once the ability to have multiple change levels is in place.

 My comments are old and my thinking is old. I never did adapt to the presence of MC. Still I think the need to aim for small modular change files will help squeak in the long run. No matter how far MC has come.

 Thank you for taking the time to think about these remarks.

Yours in curiosity and service, --Jerome Peace
7771 Compiler minor always 06-20-13 09:16 06-20-13 14:43 FrankShearar normal new none none open 0 Decompiling inlinable message sends as parameters fails Foo>>decompilerBug
      self value: (true
          ifTrue: [^ true]
          ifFalse: [^ false])
KenCausey 06-20-13 14:43 Context http://lists.squeakfoundation.org/pipermail/squeak-dev/2013-June/171663.html [^]
7769 Tools feature always 06-18-13 14:55 06-18-13 14:55 FrankShearar FrankShearar normal assigned none none trunk open 0 Add list of used traits to possible place to createMethod Martin Dias reports on pharo-dev:


I informally reported this "feature requirement" today to Sebastian,
but I wanted to post it to all.

When the debugger is shown after a MNU, the developer can press the
button "Create method". A list of the superclasses is shown to the
developer, so he/she can choose in which class crate the method. In
addition to superclasses, it would be nice to show the traits that the
classes use, since developer might want to create the method there.

7766 Tools minor always 05-31-13 14:59 05-31-13 14:59 FrankShearar normal new none none trunk open 0 Changing a system category name does not mark the PackageInfo as dirty It really should, given that that action removes all a package's classes!
7765 System minor always 05-13-13 17:36 05-13-13 18:31 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Recategorise SmartRefStream conversion methods alansTextPlusMorphbosfcebbmsopssrsggshtt0 belongs in *Morphic-Extras, for instance, because that's where TextPlusMorph lives.
FrankShearar 05-13-13 18:31 * System-fbs.528
* ST80-fbs.144
* Morphic-fbs.649
* Graphics-fbs.210
* Collections-fbs.519
7255 Kernel feature always 12-30-08 12:25 05-03-13 21:27 M8R FrankShearar normal resolved none none fixed 0 Add an #ago message to Duration Saying "10 minutes ago" is easier than "DateAndTime now - 10 minutes."


^ DateAndTime now - self
Duration-ago.st (0 KB) 01-01-70 00:33
Duration-fromNow.st (0 KB) 01-01-70 00:33
DurationTest-testAgo.st (0 KB) 01-01-70 00:33
DurationTest-testFromNow.st (0 KB) 01-01-70 00:33
wiz 12-31-08 21:06 Hi M8R,

To further your cause would you please:

Upload a fileout with the method.

And if you can write a sunit tests to that there is something that fails before and passes after the patch is added.

This could be as simple as


self shouldnt: [ 10 minutes ago ] raise: Error .

In a suitably named subclass of TestCase.
Upload the test stuff separately from the fileout.


Yours in curiosity and service, --Jerome Peace
M8R 01-01-09 16:33 Above are the fileOuts of the methods. I also added a #fromNow message to complement #ago, so one can say "5 days fromNow" and it will return the appropriate DateAndTime object.

nicolas cellier 01-05-13 01:23 I like this suggestion.

I would have prefered ahead among suggestions from http://english.stackexchange.com/questions/24457/general-purpose-antonym-for-ago [^] but google translates 'two days ahead'->'deux jours avant' which I suddenly find quite ambiguous... Hence was a bit harder (unknown) for me

In french we would say 'il y a deux jours' for past and 'dans deux jours' for future, but prefixing is not Smalltalkish.
So the opinion of a bloody french might not really matters for such subject...
FrankShearar 05-03-13 21:27 Kernel-cmm.758 & KernelTests-fbs.249 in Trunk.
7748 CI minor always 03-02-13 10:34 05-03-13 12:43 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Does the ReleaseBuilder correctly specify the current Squeak version? A couple of people have posted interesting things using "4.4 NNNN" where NNNN > 12327, the last 4.4 update.

Which ReleaseBuilder is actually running?
FrankShearar 05-03-13 12:43 ReleaseBuilder-fbs.96 removes a source of confusion: there is only one ReleaseBuilder now.
7749 Any feature always 03-02-13 11:28 05-03-13 12:42 FrankShearar FrankShearar normal assigned none none trunk open 0 HeadlessUIManager or CommandLineUIManager We've isolated most UI stuff behind a UIManager, but there's still a strong assumption of _GUI_ in there. This means that there's no support for handling errors in startup scripts: if something goes wrong, your symptom is a running image.
FrankShearar 05-03-13 12:42 https://github.com/frankshearar/squeak-ci/blob/master/CommandLineToolSet.st [^] contains a partial fix.
7754 Tools minor always 03-08-13 20:51 05-03-13 12:41 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Duplicate fixObsoleteReferences These (rather long) methods are nearly identical in ReleaseBuilder, ScriptLoader, and SmalltalkImage.

SmalltalkImage is a bit more demanding re GC, and double-GCs before the large-chunk-of-sameness. Other than that, the only difference I can see is a logging statement printing to Transcript.

Oh, it's worse: ReleaseBuilder also has the same code, except that ReleaseBuilder inspects SystemNavigation default while the other two inspect SystemNavigation default obsoleteBehaviors.
FrankShearar 05-03-13 12:41 ReleaseBuilder-fbs.96 and ScriptLoader-fbs.337 remove the duplicates.
7764 Traits major always 05-01-13 13:20 05-03-13 12:39 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Cannot alias binary message names Object subclass: MyObject
    uses: TMyTrait @ {#* -> #+}

upon accepting is turned into

Object subclass: MyObject
    uses: TMyTrait @ {#*->#+}

which does not parse (because you have a Symbol #*-> followed by rubbish; # is not valid in a Symbol without quotes).
FrankShearar 05-02-13 09:09 This is because an Association prints in a manner that can potentially not be evaluated. In particular, if the key is a binary selector, the printed form will be broken.
FrankShearar 05-02-13 09:10 * http://source.squeak.org/inbox/Collections-fbs.516.mcz [^]
* http://source.squeak.org/inbox/CollectionsTests-fbs.203.mcz [^]
FrankShearar 05-03-13 12:39 Collections-fbs.517.mcz in Trunk fixes this.
7752 Release Packaging minor always 03-06-13 17:04 04-30-13 08:49 pdebruic FrankShearar normal assigned none none open 0 make a currentStable.zip and a latest.zip on the ftp server Adding a currentStable.zip and latest.zip that inlcude the image, changes, and sources would make it easier to script the creation of the All-In-Ones.

They could go here:

ftp://ftp.squeak.org/current_stable/ [^]

and here:

ftp://ftp.squeak.org/current_development/ [^]

FrankShearar 03-06-13 19:09 ReleaseTrunk already produces a current-development artifact. Do you mean this ticket to say "produce an All-in-One artifact"?
FrankShearar 03-06-13 20:03 http://build.squeak.org/job/ReleaseSqueakTrunk/lastSuccessfulBuild/artifact/*zip*/archive.zip [^]

is what you're looking for, I think. Each run of this job also produces a named artifact (the contents of archive.zip): http://build.squeak.org/job/ReleaseSqueakTrunk/lastSuccessfulBuild/artifact/target/Squeak4.5-12511.zip [^] for instance.

This is a freshly updated trunk image.
FrankShearar 04-30-13 08:49 Paul, does the mentioned URL help?
7762 Tools minor always 04-30-13 08:48 04-30-13 08:48 FrankShearar normal new none none trunk open 0 Can't debug quick methods If a method #isQuick, you can't step into the method. This means you can't edit-and-continue methods that return constants, plain accessors, and similar methods.
7760 VM crash always 04-13-13 13:22 04-18-13 01:21 lewis lewis normal assigned none none open 0 FloatMathPlugin crashes the VM if compiled in 64 bit mode FloatMathPluginTest pass when VM is compiled 32 bit, but fail when compiled 64 bit. testCos (and probably others) will crash the VM. Tested on Linux with interpreter VM, but presumably effects all platforms.
lewis 04-18-13 00:53 The failure occurs in the support library, e.g. a segfault within the call to __ieee754_cos(). This is a gcc optimization bug, and turning off optimization makes it go away. This was identified in issue 7592 but it looks like we have reenabled too much of the optimization. Fix should go into config.cmake to set optimization to -O0, probably like this:

lewis 04-18-13 01:21 To refine this a bit, on my SuSE Linux box the optimization -O0 and -O1 both work, and -O2 crashes with a segfault. So it may be a crashworthy compromise to set it as:

7732 System minor always 01-30-13 12:33 03-22-13 13:58 FrankShearar FrankShearar normal assigned none none open 0 !s in a startup script cause SyntaxErrors Sample startup demonstrating the problem:#

FileStream stdout nextPutAll: '! is an exclamation mark'; flush.

which causes a SyntaxError whose content is:

FileStream stdout nextPutAll: Unmatched string quote ->'
Looks like something thinks it's in chunk format or something?
FrankShearar 03-22-13 13:58 The fix will involve touching CodeLoader.
7758 Any minor always 03-22-13 13:54 03-22-13 13:57 FrankShearar FrankShearar normal assigned none none trunk open 0 On Windows, you cannot specify a startup script with an absolute path I have a directory C:\Users\frank\squeak-ci. In that I run rake,
kicking off a build. That runs the following shell command -
C:/Users/frank/squeak-ci/update-image.st - from within
C:\Users\frank\squeak-ci\target, a dumping ground for various build

If I instead use ../update-image.st as the startup script, everything
works correctly. So a full path to the script fails, while a relative
path works.
FrankShearar 03-22-13 13:57 The fix will involve touching CodeLoader and the URI code.
7757 Multilingual major always 03-21-13 15:43 03-21-13 15:45 umejava normal new none none 4.4 open 0 NaturalLanguageTranslator class >> localeID: causes MNU NaturalLanguageTranslator class >> localeID: causes MNU because #cachedTranslations is not implemented.

Probably NaturalLanguageTranslator class >> localeID: should delegate to InternalTranslator class >> localeID: for backward compatibility.

Currently we can not load legacy .translation files generated from older(4.3 before) LanguageEditor.
AbstractNaturalLanguageTranslatorLocaleIdFix-mu.1.cs (1 KB) 01-01-70 00:33
umejava 03-21-13 15:45 I've attached a proposed fix (AbstractNaturalLanguageTranslatorLocaleIdFix-mu.1.cs).
7756 Graphics minor always 03-16-13 17:34 03-18-13 16:56 Nicolai Hess normal new none none open 0 InputSensor>>cursorPoint: uses primitive 91 (primitiveTestDisplayDepth) Looking at the squeakvm source, there was a primitive for setting
the cursor position:
InputSensor>> cursorPoint: aPoint
    "Set aPoint to be the current cursor location."

    ^self primCursorLocPut: aPoint

InputSensor>>primCursorLocPut: aPoint
    "If the primitive fails, try again with a rounded point."

    <primitive: 91>
    ^ self primCursorLocPutAgain: aPoint rounded

Curiosly nowadays the primitive 91 is used for testDisplayDepth.
There is no primitive for setting the mouse cursor point.
7753 Morphic minor always 03-08-13 12:20 03-08-13 12:20 Nicolai Hess normal new none none 4.3 open 0 NewColorPickerMorph cannot be used for recoloring a SketchMorph or GradientFill NewColorPickerMorph can not be used to change colors re erase
colors from a SketchMorph.
The Menu entries
"erase pixels of color" and
"recolor pixels of color" raise a DNU.

Changing a GradientFill color from within the
fill style menu (for any morph) doesn't work as well.
7750 major always 03-05-13 04:51 03-05-13 04:51 pdebruic normal new none none open 0 No mention of Squeak 4.4 on squeak.org home page Squeak 4.4 has been out > 1/6 of a year and the only links to downloads on the home page are to Squeak 4.3.

I understand you are making a new site but it seems like you could, in 10 minutes, at least swap out the 4.3 info for something about 4.4 and links to downloads until the new site is live.
7747 CI minor always 03-01-13 12:30 03-01-13 12:30 FrankShearar FrankShearar normal assigned none none trunk open 0 Make CI and Magma play nicely together Magma uses custom resource setup within which it runs its tests. HDTestReport wants to run those tests directly so it can build its results.
7738 Installer minor always 02-15-13 17:51 03-01-13 11:48 FrankShearar FrankShearar normal assigned none none trunk open 0 Useless error message when loading an unknown package. Installer ss3
    project: 'Nutcracker';
    addPackage: 'ConfigurationOfNutcracker';

results in "attempt to index non-existent element in an ordered collection".

Of course the script should say "addPackage: 'ConfigurationOfNutcracker-fbs.2.mcz'".

The error should at the least say "Unknown Monticello version 'ConfigurationOfNutcracker' from <url>"
7745 Tools feature always 02-27-13 11:28 03-01-13 10:56 FrankShearar FrankShearar normal resolved none none fixed 0 Allow patterns in #chooseFromClassOrTrait:from: In a Browser, you can type the prefix of a class. It would be really useful if you could say "MC*Copy".
FrankShearar 02-27-13 11:29 Really, this means touching ListChooser >> #updateFilter and MenuMorph for Morphic, and PopupMenu for MVC.

FrankShearar 03-01-13 10:56 ToolBuilder-Morphic-fbs.88 in trunk
7744 Tools minor always 02-27-13 11:21 03-01-13 10:27 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Loading new classes causes Browser to lose your place Open a Browser on some class, and then view a method.

Open up Monticello, and load something that adds a new class to your image.

Browser now only has the system category selected, and has unselected the class and method you were viewing.
FrankShearar 03-01-13 10:27 Tools-fbs.449 in trunk fixes this, by not doing anything when you select the system category you're already visiting.
7746 VM feature always 02-27-13 14:25 02-27-13 15:07 lewis lewis high assigned none none open 0 Add primitives to support AndreasSystemProfiler. The interpreter VM is missing the primitives required for support of AndreasSystemProfiler. The primitives are present in Cog and should be added to trunk. Problem report:
http://jvuletich.org/pipermail/cuis_jvuletich.org/2013-February/000905.html [^]
http://lists.squeakfoundation.org/pipermail/vm-dev/2013-February/012220.html [^]
lewis 02-27-13 15:07 The four primitives to be added to trunk interpreter VM are:


Implementations are in the oscog VMMaker in class Interpreter
7726 Installer minor always 01-26-13 22:25 02-27-13 11:35 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Installer doesn't trim package names of whitespace Installer squeakmap
  addPackage: 'OSProcess (4.4.11)';

fails because 'OSProcess ' is not in the cached catalog.
Possibly it's sufficient to change the search condition in SMSqueakMap >> #packageWithName:ifAbsent: to strip whitespace?
FrankShearar 01-28-13 19:27 Installer-Core.fbs.361 and Tests-fbs.187 in trunk.
FrankShearar 02-27-13 11:35 Installer-Core-fbs.361 in Trunk looks like it did the job.
7743 Any tweak always 02-27-13 10:42 02-27-13 10:42 FrankShearar FrankShearar normal assigned none none trunk open 0 String asPacked/fromPacked: is unused MethodFinder is the only sender of these messages.

If nothing uses the protocol, it ought to be pulled out into a 45Deprecated package, and later removed.
7742 Installer major always 02-26-13 09:08 02-26-13 09:16 FrankShearar FrankShearar normal assigned none none trunk open 0 Installer matches package versions by prefix Given a package-cache with files Collections-fbs.489.mcz, Collections-fbs.483.mcz and Collections-fbs.482.mcz, running

  Installer cache install: 'Collections-fbs.48'

will install Collections-fbs.489.mcz, the highest numbered package whose version name starts with 'Collections-fbs.48'.
FrankShearar 02-26-13 09:16 The root of the problem is InstallerMonticello >> #mcDetectFileBlock: which uses `pkg beginsWith:`.
6828 VM minor N/A 12-27-07 23:05 02-23-13 18:48 tim lewis normal assigned none none 3.9 open 0 make FileCopyPlugin work on 32/64 bit images and 32/64 bit unix VMs From: lewis@mail.msen.com
November 18, 2007 4:18:45 PM PST (CA)
This is a set of support code patches that make FileCopyPlugin work on
32/64 bit images and 32/64 bit unix VMs, plus a unit test for verification.

FileCopyPluginTest-dtl.cs provides a unit test to verify operation of
the FileCopyPlugin. Interestingly, the FileCopyPlugin has never worked
correctly on Unix because it answered a primitiveFail after a successful
copy operation. That means that the primitive code was doing the copy,
and the fallback code would re-do it afterward.

The support code changes are in the following files:

- For all platforms (unix and Mac OS are impacted):

- For Unix:

- Mac OS platform code will need an update also, but I did not try to do
 this (it should be simple, but I cannot test the result).

- Win32 and RiscOS do not appear to be impacted.


FileCopyPluginFixes.zip (5 KB) 01-01-70 00:33
tim 12-27-07 23:49 On 27-Dec-07, at 3:47 PM, tim Rowledge wrote:

Dave did the work to make the FileCopyPlugin work properly - and yes, I know it is vile, awful, tasteless and shouldn't exist, thank you, but until the file system is rewritten to a standard slightly better than that achievable by drunken macacque it is needed - and I don't know if the changes have been incorporated in the repository. Has anyone updated things?
johnmci 12-28-07 00:31 The unix file code just opens a new file, reads the old file, writes to the new file. This does not preserve file use attributes or create/mod dates, ACLs etc. Also for os-x HFS system you have HFS+ data, attributes, data/resource fork and a mess of other bits.

In os-x 10.4 there is a api now to copy file objects. I guess the question is now good do you want this to work? Note in Sophie we use FFI to copy files on the macintosh to preserve os-9 meta-data on media files so that quicktime will do the right thing.
tim 12-28-07 01:17 On any platform that has file ownership. permissions, creator types, metadata that affects what happens to the file, whatever, it should all be copied 'correctly' whatever that means.

The Squeak code to copy a file does none of that. On RISC OS for example that would mean the filetype going AWOL which then makes life annoying for anyone trying to read the file in a texteditor. On Macs the lack of file type metadata might mean the XCode app deciding it isn't really a C file. etc., etc.
tim 02-23-13 06:38 I would be *very* surprised if this were actually needed any more on *nix. It was only ever implemented as a quick hack to copy a file without losing the permissions & date that helped keep things straight for an early version of VMMaker. So far as I can see the unxi usage of VMMaker doesn't copy any files around and so it's hard to see it being worth keeping around.

For RISC OS it is essential for keeping the file meta-data correct - but then RISC OS does the proper sort of copy with a trivial system call, not the astonishing list of complicated flim-flammery unix seems to need. Similar reasons seem to exist on OS X.
lewis 02-23-13 13:57 The plugin is definitely not used on unix platforms, and should should be removed from the actual VM distributions for unix. Probably a good way to do that is just delete the platform support code for unix (platforms/unix/plugins/FileCopyPlugin) so that it does not get built, but leave the plugin in VMMaker itself.
tim 02-23-13 18:48 Yup. If Ian cares to pull the unix platform code for it, VMMaker will take care of the rest.
I wonder if the file system code will ever actually get improved enough to make it un-needed everywhere?
7739 block N/A 02-20-13 12:31 02-20-13 12:31 Saijanai normal new none none open 0 want to be able to do things like GC timing tests I'd like to be able to create and run benchmarks for the remote image.

Create new methods for existing classes.
Create new classes.
Create new instances of objects and run methods remotely.
7736 CI minor always 02-12-13 10:38 02-12-13 10:38 FrankShearar FrankShearar normal assigned none none trunk open 0 The "no sources file" dialog breaks automation If you try launch an image and the image can't find a sources file it pops up a modal dialog complaining about the missing file.

If you're running your image as a script, you don't see the dialog. You just see a hung process.
7672 Browser minor always 09-09-11 21:04 02-12-13 09:42 FrankShearar FrankShearar normal assigned none none trunk open 0 #selectedClassOrMetaClass can return nil, and its callers don't check for nils. Using multiwindow browsers, open up a browser on a class Foo. Make a method, bar. Make a new window. Rename Foo. Go back to first window: MNU - nil doesn't understand #compiledMethodAt:ifAbsent: in #selectedMessage, because selectedClassOrMetaClass returns nil, because the formerly-selected class is no more.
FrankShearar 02-12-13 09:42 The Browser ought to catch the system notification of the class name change and update its state accordingly.
7722 Monticello minor always 01-21-13 21:26 02-12-13 09:39 FrankShearar FrankShearar normal resolved none none trunk fixed 0 InstallerMonticello >> #project: should use FileDirectory slash (mc respondsTo: #directory:) ifTrue: [ mc := mc copy directory: root ,'/', name ].

Not '/'. FileDirectory slash.
FrankShearar 02-12-13 09:39 Installer-Core-fbs.365 in Trunk
7725 Collections minor always 01-25-13 17:24 02-12-13 09:35 FrankShearar FrankShearar normal resolved none none trunk fixed 0 String >> #asCamelCase needs tests http://permalink.gmane.org/gmane.comp.lang.smalltalk.squeak.general/166142 [^]
FrankShearar 02-12-13 09:35 CollectionsTests-fbs.197 in Trunk
7735 Installer minor always 02-11-13 19:51 02-11-13 19:51 FrankShearar FrankShearar normal assigned none none trunk open 0 Installer squeakmap ought to build SM cache if not already present Otherwise, you need to perform a UI action before you can run any `Installer squeakmap` action.
7728 Exceptions minor always 01-26-13 23:49 02-08-13 13:03 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Move FTPConnectionException to somewhere more appropriate Exceptions-Kernel is not the right place.
FrankShearar 01-26-13 23:50 Maybe in System-Download? HTTPLoader (!) is the only thing that references it.
FrankShearar 02-08-13 13:03 Exceptions-fbs.44 and Network-fbs.139 in Trunk
7730 Tools minor always 01-29-13 10:36 02-08-13 13:00 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Browser's recently used class list shouldn't include currently viewed class This is the RecentClasses list: when you build the menu, if the top entry is Foo and you're browsing Foo, just leave it off.
FrankShearar 02-08-13 13:00 Tools-fbs.446 in Trunk
7734 Tools minor always 02-06-13 11:09 02-06-13 11:09 FrankShearar normal new none none trunk open 0 TimeProfileBrowser MNU on non-method lines TimeProfileBrowser is a MessageSet that lists a bunch of messages for its performance data, as well as lines for the other output given by profiling: GC stats, marker lines like "** Leaves **" and so on.

Clicking these latter lines often raises an MNU because TimeProfileBrowser doesn't understand #shoutParserClass.
Presumably #selectedMessageName needs tweaking, because this method determines whether or not the contents pane is styled.
7733 System major always 01-31-13 19:39 01-31-13 20:13 vaidasd normal new none none 4.4 open 0 If anti-virus is active, browsing Implementers is very slow. If anti-virus is active, browsing Implementers is very slow.
Windows 7 64 bit, Cog Dec 12, 2012
bottleneck in method
slow part is accessing changes file:
time to run: [SourceFiles second readOnlyCopy] is ~ 100 ms. Caching
is introduced here some time after 4.1. On XP 32 bit without antivirus
there is no issue.
http://lists.squeakfoundation.org/pipermail/squeak-dev/2013-January/168052.html [^]
7731 Tools minor always 01-29-13 13:53 01-29-13 13:53 FrankShearar normal new none none trunk open 0 Creating a class with an empty category Object subclass: #NameOfSubclass1
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''
    category: ''.

Creates an object in a category called ''. It should raise an error.

(Thanks to Sean P. DeNigris @ http://code.google.com/p/pharo/issues/detail?can=2&q=7354&colspec=ID%20Type%20Status%20Summary%20Milestone%20Difficulty&id=7354) [^]
7729 Tools minor always 01-28-13 18:59 01-28-13 18:59 FrankShearar normal new none none trunk open 0 SMLoaderPlus needs non-stretchy buttons If you stretch one vertically, the buttons resize in an unsightly manner. See Browser's use of LayoutFrames to do it right.
7709 System minor always 12-21-12 14:15 01-25-13 23:04 Lars FrankShearar normal resolved none none fixed 0 Image Segments can't be written to file anymore ImageSegment new
    copyFromRoots: (Array with: TestCase) sizeHint: 100;
    writeToFile: 'TestCase';
raises an error in writeToFile: aName because the standard nextPutAll: tactic has changed. The assumption is, that any file will be written with either aByteArray or some UTF8-String.

The forward solution of appending MultiByteFileStream>>nextPutAll: is attached.
MultiByteFileStream-nextPutAll.st (0 KB) 01-01-70 00:33
FrankShearar 01-01-13 22:04 In the Inbox as Multilingual-fbs.157 and Tests-fbs.177.
FrankShearar 01-25-13 15:45 In Trunk as Tests-fbs.186 and Multilingual-fbs.157.
Lars 01-25-13 16:11 Thanks for accepting the fix.
I'm not sure whether the testcase is ok. When stepping through the test case, it took a different path (maybe also different to the one it would take if not stepped through), and thus ended up never calling nextPutAll. I'd suggest creating a segment of another class, e.g. ScriptLoader, any class that is not referenced on the stack.
Best, Lars
FrankShearar 01-25-13 16:14 Hm, OK. I saw the test fail before applying the fix and pass afterwards.

Would you mind giving me a test that you think would be representative?
Lars 01-25-13 16:18 Just switch the exportet TestCase for ScriptLoader:

ImageSegment new
    copyFromRoots: (Array with: ScriptLoader) sizeHint: 100;
    writeToFile: 'ScriptLoader';

Oh, and while you're at it, you may want to delete the created file (ScriptLoader.seg) after success.
Lars 01-25-13 16:19 but only after access ScriptLoader ...
FrankShearar 01-25-13 17:41 I must be missing something. Both seem to trigger the bug in the same way, in that some bit somewhere doesn't understand #asUnicode. I can see in both cases that MultiByteFileStream >> #nextPutAll: on the call stack.

"but only after access ScriptLoader ..." <-- I also don't understand this.
Lars 01-25-13 22:13 Sorry for answering so late, but I got interrupted and had work ...

When I stepped through the test case, while exporting TestCase, the instance variable status was set to #inactive. Because of that, exporting always aborted early. I assumed, the status #inactive as opposed to the expected #active was due to my stepping through a subclass of TestCase.

If you saw it call nextPutAll, everything is fine. My bad, sorry.

The last comment, was because ImageSegments is meant to export classes into files, removing them from the Image. If you delete the file before reloading the class, the image might break, shouldn't it?
FrankShearar 01-25-13 23:04 Certainly if you delete them injudiciously you can get into a very nasty state, as I discovered!

OK, so I think we just leave the issue as is, unless you can think of anything else we might need?
7724 Environments minor always 01-25-13 17:10 01-25-13 18:45 FrankShearar FrankShearar normal assigned none none trunk open 0 Environment>>bindingOf: needs Undeclared tests Tests for:

"Environment>>bindingOf: must not answer undeclared bindings. E.g., in my case a binding in undeclared shadowed a perfectly fine class variable higher up in the class hierarchy."

http://lists.squeakfoundation.org/pipermail/squeak-dev/2013-January/167794.html [^]
7720 VM minor always 01-19-13 01:37 01-23-13 09:07 nicolas cellier lewis normal assigned none none trunk open 0 FFI silently accept a 64bits argument > LLONG_MAX instead of failing 1. Create a FFI call to a function taking a signed long long (64 bits) integer
2. Call the function with (1<<63)

A well behaved FFIPlugin should fail, because 1<<63 is greater than maximal representable signed long long (presumably 1<<63-1 in two complement).

But instead of failing, FFI interpret 1<<63 as a negative int, which is a bad feature.
This is caused by FFIPlugin>>#ffiPushSignedLongLongOop: which omit to test this case of LLONG_MAX overflow...

Note that COG version (ThreadedFFIPlugin>>#ffiPushSignedLongLongOop:in:) is correct because it uses #signed64BitValueOf:
nicolas cellier 01-23-13 09:07 Note that http://smalltalkhub.com/mc/nice/NiceVMExperiments/main/VMMaker.oscog-nice.275.mcz [^] contains an idea of correction for FFIPlugin>>ffiPushSignedLongLongOop:

signed/unsigned word agnostic could be:

((highWord bitAnd: 16r80000000) = 0 or: [negative and: [lowWord = 0 and: [(highWord
bitXor: 16r80000000) = 0]) ifFalse: [ ffi coercion failed ]
7723 Monticello minor always 01-21-13 22:39 01-21-13 22:39 FrankShearar FrankShearar normal assigned none none trunk open 0 MCFileBasedRepository doesn't handle the case of a missing file #versionReaderForFileNamed:do: just lets deeper layers throw a FileNotFoundException.

To provide a uniform error handling API, it should catch this and throw an MCError (see recent Inbox submission for this class definition).
versionReaderForFileNamed: aString do: aBlock
    ^ [self
        readStreamForFileNamed: aString
        do: [:s |
            (MCVersionReader readerClassForFileNamed: aString) ifNotNil:
                [:class | aBlock value: (class on: s fileName: aString)]]] on: FileDoesNotExistException do: [self error: 'File ', aString, ' does not exist'].
7719 Tools minor always 01-17-13 14:11 01-21-13 10:37 Bob Arning lewis normal resolved none none 4.4 fixed 0 FileContentsBrowser erroneously adds to current change set I'm not sure how many folks still use FileContentsBrowser, but there is a small issue:

browseStream: aStream named: aString

    | browser |
    Cursor wait showWhile: [ | package packageDict organizer |
        packageDict := Dictionary new.
        browser := self new.
        organizer := SystemOrganizer defaultList: Array new.
        package := (FilePackage new fullName: aString; fileInFrom: aStream).
            at: package packageName
            put: package.
            classifyAll: package classes keys
            under: package packageName.
        (browser := self systemOrganizer: organizer)
            packages: packageDict].
        openBrowserView: browser createViews
        label: 'File Contents Browser'.

which soon leads to SystemOrganizer

classify: element under: newCategory
    | oldCategory class |
    oldCategory := self categoryOfElement: element.
    super classify: element under: newCategory.
    class := Smalltalk at: element ifAbsent: [^ self].
    SystemChangeNotifier uniqueInstance
        class: class
        recategorizedFrom: oldCategory
        to: newCategory

which causes all known classes in the file being browsed to be added to the current change set as having a class definition change. Perhaps it makes sense to do the notification only if this SystemOrganizer is actually SystemOrganization.
FrankShearar 01-20-13 15:15 http://source.squeak.org/inbox/System-dtl.512.mcz [^] is a proposed fix.
FrankShearar 01-21-13 10:37 Fix moved to trunk.
7721 System minor always 01-20-13 15:12 01-20-13 16:50 FrankShearar normal new none none open 0 An image whose changes file has been deleted cannot quit Open some image. Delete its changes file. Try quit. Whether you choose "yes" or "no" to "Save changes before quitting?" you get a prim failure as the image tries to save its changes to a file that's not there anymore.

Correct behaviour: Try write the file, but if that fails, just quit.
KenCausey 01-20-13 15:57 I would think if you chose 'yes' to the question just quitting is perhaps not the best action. Minimally I think there needs to be a warning that it was not possible to save the changes and why. Even better would be an opportunity to file out the changes as a .cs or something like that.
FrankShearar 01-20-13 16:50 Agreed, in the "yes" case, but definitely not in the "no" case.
7718 Network tweak N/A 01-16-13 15:07 01-16-13 15:07 FrankShearar FrankShearar normal assigned none none trunk open 0 HTTPSocket class >> #httpRequest:url:headers:content:response: should not parse URLs We have a perfectly good URL parser in the URL class. We should use it.
7717 Release Packaging minor always 01-15-13 13:25 01-15-13 13:25 FrankShearar FrankShearar normal assigned none none open 0 ReleaseBuilder class >> #transferCurrentPackagesAsUser:password: must create an update map An update stream needs an initial MCM explaining what packages are in the stream. This method's the obvious place to generate the configuration map.
3493 Kernel minor always 04-21-06 22:48 01-08-13 21:44 nicolas cellier normal new none none 3.9 open 0 printing a float in base 16 is broken sometimes See this example:

    "this should be the maximum floating point value in IEEE 754 double precision"
    (Number readFrom: ((String new: 100) writeStream
        nextPutAll: '2r1.';
        next: 52 put: $1;
        nextPutAll: 'e1023';
        contents)) printStringBase: 16.

"will print as 16r1.0e255"

    (Number readFrom: ((String new: 100) writeStream
        nextPutAll: '2r1.';
        next: 52 put: $1;
        nextPutAll: 'e1020';
        contents)) printStringBase: 16.

"will print as 16r2.0e255, twice the first number when it should be 1/8..."

Well, in base (2 raisedTo: Integer anyPositive), printString should be exact...
First number is exactly
and last is exactly
if exponent is written in base 10,
or same mantissa with exponent eFF in base 16...
Note that absPrintExactlyOn:base: will give correct answer.

Rounding should better not be used, because printed number would answer Infinity when read back... But if it where used correctly, then the answers would be:

Kernel-Numbers-PrintFloatBase16Patch.1.cs (3 KB) 01-01-70 00:33
FloatPrintBase16-M3493-Test.1.cs (2 KB) 01-01-70 00:33
FloatPrintStringBase2-M3493-Test.1.cs (1 KB) 01-01-70 00:33
FloatPrintStringBase2-M3493-Test.2.cs (1 KB) 01-01-70 00:33
nicolas cellier 04-22-06 00:05 I debugIt, and it is in Float>>absPrintOn:base:

Of course it is Infinity that is striking silently...
As usual, I would prefer an exception and a debugger opened to a silent bug...
Well, there is a protection exp=1023 ifTrue: [...], but 1 line too late...

So i propose a patch, hoping it does not break anything else...
But unfortunately it does not deal with this second bug (not mine):

    (Number readFrom: ((String new: 100) writeStream
        nextPutAll: '2r1.';
        next: 52 put: $1;
        nextPutAll: 'e1023';
        contents)) printStringBase: 2.

    "will answer 2r2.0e1024"

Ouch! tricky tc1 and tc2 logical conditions...
Correct answer would be 2r1.0e1024 if rounding is allowed (but then result cannot be read back, it would overflow and answer Infinity).
ducasse 04-22-06 13:38 Could we have some tests :)
nicolas cellier 08-31-08 00:07 FloatPrintStringBase2-M3493-Test.1.cs is incorrect.
use FloatPrintStringBase2-M3493-Test.2.cs instead.
nicolas cellier 01-08-13 21:44 In squeak 4.4, printStringBase: is correct, but the bad behaviour can still be triggered with these snippets:
String streamContents: [:str | (Number readFrom: ((String new: 100) writeStream
        nextPutAll: '2r1.';
        next: 52 put: $1;
        nextPutAll: 'e1023';
        contents)) absPrintOn: str base: 16].

String streamContents: [:str | (Number readFrom: ((String new: 100) writeStream
        nextPutAll: '2r1.';
        next: 52 put: $1;
        nextPutAll: 'e1023';
        contents)) absPrintOn: str base: 16].

String streamContents: [:str | (Number readFrom: ((String new: 100) writeStream
        nextPutAll: '2r1.';
        next: 52 put: $1;
        nextPutAll: 'e1023';
        contents)) absPrintOn: str base: 2].
7694 Graphics major always 07-12-12 11:48 01-05-13 22:00 caw andreas normal assigned none none open 0 Buggy drawing of text by Pen class under OSX OSX 10.7.4
Squeak 3.4 update #11860

Display restoreAfter:
[Pen new squareNib: 2; color: Color red; turn: 45;
        print: 'The owl and the pussycat went to sea in a beautiful pea green boat.' withFont: TextStyle defaultFont]

draws text at the correct angle, but the text is patterned
same for defaultNib:1

screen dump uploaded

any help appreciated!


squeak_pen.png (634 KB) 01-01-70 00:33
caw 07-12-12 11:50 deep apologies if this is not "major" - it's very major for me, as it screws up the onscreen display of text !

seriously - sorry if it's been assigned to far to high a level !! (Andreas Raab ? !)
KenCausey 07-12-12 13:18 No worries. We don't assign all that much value to the severity field and it is easily changed if it mattered. 'andreas' is indeed Andreas Raab but I suspect he is a little too busy to monitor the issues here right now. Sadly I have to admit this mantis is not very well monitored at all, the community has just never developed the consistent habit of using it.

If you have not already I highly recommend that you email the squeak-dev mailing list with this report and put the image up on imgur.com or some other image posting site so it is easily viewable. Also include a link to this issue and actually I guess they could look at the image here. But I think you might find more people actually looking at the image and becoming intrigued enough to look into it if is linked to directly in your email.

lewis 07-13-12 00:44 I tried this on Linux and get the same results, so it is not platform dependent. I also tried on an old Squeak 3.6 image (also on Linux), and got similar results except that the default font is different, with Squeak 3.6 using a StrikeFont(NewYork10 12) and Squeak trunk using a StrikeFont(Bitmap DejaVu Sans 9 14). So I suspect that this is not so much a bug as an existing limitation of the Pen class when drawing these fonts.
nicolas cellier 01-05-13 22:00 See also the squeak-dev discussion which explains that the algorithm is just too much naive to work...
It did never work, and is even worse now with font anti-aliasing.
http://permalink.gmane.org/gmane.comp.lang.smalltalk.squeak.general/162853 [^]
7714 System minor always 01-02-13 22:54 01-03-13 17:20 FrankShearar normal new none none trunk open 0 DataStream class >> #initialize references Smalltalk This should use the/an environment.
FrankShearar 01-03-13 17:20 Proposed fix in System-fbs.510: "self environment allClassesDo:" instead of "Smalltalk do".
7703 Compiler minor always 08-21-12 06:59 01-03-13 09:51 kwl normal resolved none none 4.3 fixed 0 During fileIn, Parser>>notify:at: has Error: subscript is out of bounds: 73 Filing in, from source code which has typo in the last position (inadvertedly typed a > behind last valid expression).

When Parser wants to report, it has a problem with arguments for Text>>copyReplaceFrom:to:with:.
The typo can be seen in the first ByteString in the attached SqueakDebug.log.

.image: Squeak4.3.image latest update: #11860
VM: Squeak3.10.2 of 11 February 2010 [latest update: #9314] Win32 built on Jul 27 2010 20:35:19 Compiler: 2.95.2 19991024 (release)
SqueakDebug.log (16 KB) 01-01-70 00:33
FrankShearar 12-18-12 12:23 Is it possible for you to show the offending piece of code? Can you produce a minimal case that reproduces the issue?
kwl 12-18-12 15:53 FrankShearar asked: Is it possible for you to show the offending piece of code?

Sure, here comes the original (offending) source coded from the (attached) log file, it is decorated here for use by file-in with alt-G (in e.g. the File List tool):

!UndefinedObject methodsFor: 'FrankShearar'!
return: argv adaptToFloat: rcvr
 ^argv adaptToFloat: rcvr andSend: self>! !

FrankShearar asked: Can you produce a minimal case that reproduces the issue?

Sure, in the previous I just copied&pasted from the log file (the one attached to the original report), and then alt-G produced the same "Error: subscript is out of bounds: 73".
FrankShearar 12-18-12 17:11 I put the chunk in file (foo.st). In a Squeak 4.4 trunk image I filed in foo.st. I got a SyntaxError correctly highlighting the error.
nicolas cellier 01-02-13 21:14 fixed in 4.4 (various changes from Compiler-nice.222 to Compiler-nice.225)
kwl 01-03-13 09:51 Thanks for the good teamwork!
7605 VM crash always 02-03-11 18:21 01-02-13 21:29 leves lewis normal resolved none none trunk fixed 0 VMs assume that Float have two slots and don't check it which may lead to problems Currently Floats are variableWordSubclasses usually with two slots. But users can create them with any size. A possible typo is to use Float new instead of Float new: 2. If the VM assumes that the size of these objects is 2 without checking it, it leads to various issues. The following code crashes CogVM (r2349) immediately:

f := Float new.
Array new.
f at: 1 put: 0.

Cog overwrites the header of the Array created after the Float, then realizes the problem (last object overwritten) and crashes. SqueakVM is safe for this example, but some primitives are not. The following returns a random number (based on the contents of the memory) using SqueakVM:

Float new ln

It may also crash the VM, though the chance is small.
I'm pretty sure that performance is the reason to assume that Float's have two slots. To avoid sacrificing it, the best may be to update the image side code to always create Floats with two slots.
lewis 02-04-11 00:53 Agreed, better to handle in the image. Instances of Float are not normally created with #new or #new: so adding checks for this would make sense. Adding checks in #primitiveNew and #primitiveNewWithArg for the special case of class Float sounds not so good. Note a Float has two slots for both 32-bit and 64-bit image, so the check would be simple.
leves 02-04-11 01:06 Another option is overriding #basicNew and #basicNew:. Both of them could be implemented as ^super basicNew: 2. This way Float new wouldn't raise an error, but would return a valid Float object.
nicolas cellier 01-02-13 21:29 OK, I fixed it at image side in trunk 4.5 Kernel-nice.728 according to leves suggestion
7711 SqueakMap major always 12-27-12 13:34 01-01-13 21:31 FrankShearar gokr normal assigned none none open 0 Cannot update install scripts I made a mistake in the install script when releasing the Zippers package [1]. I tried to upload a new, corrected, version of the script [2]. Things look OK, in that I can see the file being uploaded. However, downloading the "new" version shows that SqueakMap has not overwritten the file.

[1] http://map.squeak.org/account/package/94f09ced-8eee-4c60-b894-64c07c44c5c5/editreleases [^]
[2] http://map.squeak.org/accountbyid/7d14beff-c6b5-40fe-b47b-625d54519641/files/install-Zippers-1.0.st [^]
The file SHOULD say

Installer ss3 install: 'ConfigurationOfZippers'.
(Smalltalk at: #ConfigurationOfZippers) load.

but says this:

Installer cache install: 'ConfigurationOfZippers'.
(Smalltalk at: #ConfigurationOfZippers) load.
FrankShearar 12-27-12 20:34 A workaround is to simply use the in-image Release Editor (right click a package in the SqueakMap Catalog).
FrankShearar 01-01-13 21:31 This bug report should now represent the fact that the _web_ part of SM doesn't update things correctly. Using the in-image editor works.
7713 Release Packaging minor always 01-01-13 21:25 01-01-13 21:25 FrankShearar FrankShearar normal assigned none none trunk open 0 Updating from an update stream that has no mcms fails MCMcmUpdater class >> #updateListFor: examines an update stream for updates (files of the form update-initials.NNNN.mcm). If it finds none, it returns an empty collection. That's fine. However, MCMcmUpdater class >> #updateFromRepositories: then returns nil.

Utilities class >> #updateFromServer reports this nil as (as far as the user can tell) an error, saying "Unable to retrieve updates from remote repository."

Technically true - there ARE no updates - but rather misleading.
7712 Morphic minor always 12-28-12 18:53 12-28-12 19:28 garydunnhi normal new none none 4.4 open 0 Proposed change in setting text attributes Yellow-click on selected text pops up a menu that includes

set font ... (k)
set style ... (K)
set alignment ... (u)

The first two options lead to different ways to set the font, but not to set what I consider style, that being attributes like bold and italic. Recommend that "set style" bring up the same menu as Brown FF on the halo. Even better, a modified version of the Brown FF menu that excludes alignment choices.
7708 SqueakMap minor always 12-21-12 10:55 12-27-12 13:31 hirzel FrankShearar normal resolved none none 4.4 fixed 0 Zippers package is shown in SqueakMap for 4.4. but does not load Frank Shearar's 'Zippers' package
http://ss3.gemstone.com/ss/Zippers.html [^]
is shown as a loadable SqueakMap entry for 4.4

However if I press 'Install' two dialog boxes
'The package has no published release for your Squeak version, try
releases for any Squeak version' appear.

After confirming to times with 'Yes' (= I still want to load it)

nothing seems to happen....
lewis 12-21-12 14:04 SqueakMap does not consider 'Squeak 4.4' and 'Squeak4.4' to be the same version, but it probably should do so. Remove spaces from the version string compare. Fixed in trunk with SMBase-dtl.131.

Note that in general it is best if the SqueakMap version names match the actuals, but allowing spaces seems harmless so this patch resolves the immediate problem.
7710 CI minor always 12-21-12 14:43 12-21-12 14:43 FrankShearar FrankShearar normal assigned none none open 0 Builds do not record changes since the last build Because we track the git repo of the scripts, we just see something like

    No changes

    Revision: 239bb0d6733d473b9fc39d99b33ce5dc1f7884dc

Which is utterly useless. Really what we want to see is the list of MC versions added since we last ran a build.
4818 Kernel minor always 09-09-06 16:45 11-29-12 13:19 Krivanek normal feedback none none 3.10 open 0 [KernelImageOverride] InputSensor userInterruptWatcher InputSensor >> userInterruptWatcher


    "Wait for user interrupts and open a notifier on the active process when one occurs."

    [true] whileTrue: [
        InterruptSemaphore wait.
        Display deferUpdates: false.
        SoundService default shutDown.
        Smalltalk handleUserInterrupt]


    "Wait for user interrupts and open a notifier on the active process when one occurs."

    [true] whileTrue: [
        InterruptSemaphore wait.
        Display deferUpdates: false.
        Smalltalk handleUserInterrupt]

Sound dependent code removed
lewis 11-29-12 13:19 The intent of this proposed change is not clear to me, but removing the SoundService shutdown would be a bad thing in general. If this is a package dependency issue, then something like "Smalltalk at: #SoundService ifPresent: ... " might be a better approach. This should be discussed on squeak-dev if this issue is worth pursuing.
7706 Tools minor always 08-30-12 20:36 08-30-12 20:36 FrankShearar normal new none none trunk open 0 TestRunner doesn't remove from its test list TestCases that are deleted Given a FooTest TestCase visible in a TestRunner. Remove FooTest from the system. See it visible (but unselected) in the list of tests. If you select it, TestRunner will fail everything with obsoleted TestCases.
7704 Tools minor always 08-29-12 21:04 08-29-12 21:04 FrankShearar normal new none none trunk open 0 MCSnapshotbrowser: cannot resize panes Unlike a Browser, you can't make the lower CodeHolder's morph larger by shrinking the upper section of the UI.
7702 Files minor always 08-16-12 19:48 08-16-12 19:48 FrankShearar normal new none none trunk open 0 FileList2 doesn't refresh directory listings If you're in a directory, "add new directory". You won't actually see the directory until you close that node in the tree list and reopen it.
7681 Release Packaging minor always 11-21-11 01:54 08-16-12 14:57 mikevdg FrankShearar normal assigned none none 4.2 open 0 squeak.sh does not require bash.

In squeak.sh in the Squeak 4.2 all-in-one package, the hash-bang should use /bin/sh rather than /bin/bash. I don't actually have bash installed by default on the awesome Linux distro I use (Slitaz Linux).

FrankShearar 08-16-12 14:57 The ticket refers to 4.2. I'll make sure that the desired change makes it into the 4.4 release.
7700 Tools minor always 07-26-12 09:36 08-16-12 14:54 FrankShearar FrankShearar normal assigned none none trunk open 0 Some tests require user input Some tests require author initials set, which is... not good from an automation perspective.

Perhaps TestRunner should, as part of its "run tests" setup, set the initials if not already set.
FrankShearar 08-16-12 14:54 ... and if TestRunner does have to set the initials, it must _unset_ them afterwards.
7698 Tools minor always 07-18-12 21:35 08-16-12 14:54 FrankShearar FrankShearar normal assigned none none trunk open 0 Debugger, hit "debug" and window resizes Something goes wrong. Pink debugger pops up. I resize the window. I select an interesting looking part of the stack. The window reverts to its original size.

It shouldn't: even if it's a whole new SystemWindow, it's apparently/ostensibly the same window, and should keep its new size.
leves 08-14-12 00:34 The first one is likely to be the PreDebugWindow, while the second one is the real debugger. They look similar, but are not the same.
FrankShearar 08-14-12 09:54 You're right. It's still confusing, so still needs fixing :)
6830 Kernel major always 12-28-07 21:38 08-14-12 00:30 orgsow leves normal feedback none none 3.10 reopened 0 A mutex can wind up with a semaphore with more than 1 excessSignal I am new to smalltalk and was playing around with processes to see how they work and I've encountered something that should never happen.

It may be related to this bug: http://bugs.squeak.org/view.php?id=6576 [^] since I am using Delay.

The semaphore in a mutex should never go above 1 excess signal.

This script here will cause that to happen if you put it into a Transcript window and "do it":


|p keepGoing i t resume suspend stop semcounts m |
m := Mutex new. p := Processor activeProcess.keepGoing := true.i := 0.t := Transcript.m critical: [t cr;cr;cr;cr;cr.].
m critical: [ t cr; show: 'init: ', Processor activeProcess oopString; cr].
semcounts := ''.
semcounts := 'init:', m excessSignals asString, ' ', semcounts.

resume := [
    m critical: [ t cr; show: 'resume: ', Processor activeProcess oopString; cr].
    semcounts := 'resume1:', m excessSignals asString, ' ', semcounts.
    (Delay forSeconds: 20) wait.
    m critical: [ t cr; show: 'resuming'; cr.
        p resume].
    semcounts := 'resume2:', m excessSignals asString, ' ', semcounts.
suspend := [
    m critical: [ t cr; show: 'pause: ', Processor activeProcess oopString; cr].
    (Delay forSeconds: 10) wait.
    m critical: [ t cr; show: 'pausing'; cr.
        p suspend].
    semcounts := 'suspend:', m excessSignals asString, ' ', semcounts.
stop := [
    m critical: [ t cr; show: 'stop: ', Processor activeProcess oopString; cr].
    (Delay forSeconds: 30) wait.
    m critical: [ t cr; show: 'stopping'; cr.
        keepGoing := false].
    semcounts := 'stop:', m excessSignals asString, ' ', semcounts.

resume fork.
suspend fork.
stop fork.

m critical: [ t cr; show: 'end: ', Processor activeProcess oopString; cr].
semcounts := 'end:', m excessSignals asString, ' ', semcounts.

[keepGoing] whileTrue: [ m critical: [t show: i; space].
     "Processor yield."
     i := i + 1].
semcounts := 'beforedone:', m excessSignals asString, ' ', semcounts.

(Delay forSeconds: 10) wait.

m critical: [ t cr; show: 'done.';cr.].
semcounts := 'done:', m excessSignals asString, ' ', semcounts.

Transcript show: semcounts asString.


The output of the last line is: done:2 beforedone:2 stop:1 resume2:1 suspend:1 resume1:0 end:1 init:1

I have ran a version of this that stores the mutex in the Smalltalk dictionary for reuse and if it's reused it hangs the system. Infact, that's why I originally started trying to figure out what was going on because it was hanging on the second run every time.

Also, notice the commented out "Processor yield." If you uncomment that then the program will function as expected (ie, excessSignals will not go over 1.) That may help diagnose the problem.

This happens in 3.9 and 3.10
I added 2 methods to the system to expose excessSignals. You need to fileIn the attatched change set to get them, or you can add them manually from here:

!Mutex methodsFor: '*miles-debug' stamp: 'mbg 12/28/2007 13:19'!
    ^semaphore excessSignals.! !

!Semaphore methodsFor: '*miles-debug' stamp: 'mbg 12/28/2007 13:19'!
    ^excessSignals.! !
miles-debug.1.cs (1 KB) 01-01-70 00:33
mutex_bug.st (2 KB) 01-01-70 00:33
andreas 02-06-12 10:35 Just stumbled over this. The example is a bit obscure but the problem is an old one, namely that suspend and resume of processes waiting on semaphores doesn't work properly. To wit:

| sema process |
sema := Semaphore new.
process := [sema critical:[]] fork.
(Delay forSeconds: 1) wait.
process suspend.
process resume.

When the process is suspended, it is taken off the semaphore's list, but when it is resumed it's not put back onto it (which would be very difficult to do) but the code in Semaphore critical will signal the semaphore regardless.

Basically, external process manipulation is always tricky and should be done with great care, or better, left only for the debugger.

laza 07-14-12 11:12 Basically I read this as "not fixable"
leves 08-14-12 00:30 I have an idea how to fix it, I wrote a mail about it once, but can't find it now. The idea is to add another variable to Process in order to hold a reference to the Semaphore it was waiting for while it's suspended. When the process is resumed, the process can #wait again for the same Semaphore. I started hacking the VM and got a partially working solution (the suspend/resume mechanism is quite spread out across many methods), but the code is probably gone due to a hard disk failure. It might still be available in the backups, but I don't have access to them right now.
7701 VM crash always 08-03-12 00:07 08-08-12 11:59 lewis lewis normal resolved none none fixed 0 Pulse audio Scratch plugin causes seg fault on 64bit Ubuntu installation Date: Thu, 2 Aug 2012 17:36:42 -0400
From: Amos Blanton <amos@scratch.mit.edu>
To: Squeak Virtual Machine Development Discussion <vm-dev@lists.squeakfoundation.org>
Subject: [Vm-dev] Pulse audio Scratch plugin causes seg fault on 64bit Ubuntu installation

To reproduce:

1. Execute Scratch using current VM and pulse plugin (on Ubuntu 12.04, 64
bit system):
Executing: /usr/lib/squeak/4.4.7-2357/squeakvm -encoding UTF-8
-vm-display-x11 -xshm -plugins
/usr/lib/scratch/plugins/:/usr/lib/squeak/4.4.7-2357/ -vm-sound-pulse
(There is no pulse plugin in /usr/lib/scratch/plugins in my installation
package, so it must be using the one in /usr/lib/squeak/4.4.7-2357)

2. Click "Sounds" tab, click play icon next to meow. That results in:

Segmentation fault

10273532 [] in SoundPlayer class>playLoop
10262332 Semaphore>critical:
10262240 SoundPlayer class>playLoop
10273228 [] in SoundPlayer class>startPlayerProcessBufferSize:rate:stereo:
10273320 [] in BlockContext>newProcess
Aborted (core dumped)

Note that the same package on 32 bit systems does not produce the error
(playback and recording both work).

The issue is also described here:
https://bugs.launchpad.net/ubuntu/+source/squeak-vm/+bug/1009080 [^]

If someone can take a look and patch this, we'd very much appreciate it!
This is the last major (known) issue we've got with Scratch running on

sqUnixSoundPulseAudio.c (32 KB) 01-01-70 00:33
audioIO_t-alignment.txt (1 KB) 01-01-70 00:33
platforms-unix-sound-pulse-sqUnixSoundPulse.c.tar (40 KB) 01-01-70 00:33
dmoc 08-03-12 12:03 I created the PA plugin but I'm not set-up for 64-bit and never done any 64-bit porting. That said, I've looked at the audioIO_t struct and factored in 64-bit type alignments (AFAIK). You can see the calc's in the attached audioIO_t-alignment.txt (paste into a spreadsheet if difficult to read). Based on this a dummy INT has been added to force the uint32 "rate" of pa_sample_spec to be also 8-byte aligned. I'd be grateful if someone geared up for 64-bit compiling would give it a go.

lewis 08-07-12 01:24 I am having trouble reproducing the crash because I cannot figure out how to get pulse audio activated on my SuSE Linux box and the Scratch kitty does "meow" just fine on my 64-bit VM. But I did load enough of Gnome to be able to build vm-sound-pulse in 64-bit mode. I get the following compiler warnings both with and without the alignment patch, so I expect there are some type declaration issues.

Scanning dependencies of target vm-sound-pulse
[100%] Building C object vm-sound-pulse/CMakeFiles/vm-sound-pulse.dir/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c.o
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c: In function ‘sound_PlaySamplesFromAtLength’:
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c:842:42: warning: cast to pointer from integer of different size
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c: In function ‘sound_RecordSamplesIntoAtLength’:
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c:1034:34: warning: cast to pointer from integer of different size
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c: At top level:
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c:1116:1: warning: initialization from incompatible pointer type
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c:1116:1: warning: initialization from incompatible pointer type
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c:1116:1: warning: initialization from incompatible pointer type
/home/lewis/squeak/Squeak3.10-dev/platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c:1116:1: warning: initialization from incompatible pointer type
Linking C shared module so.vm-sound-pulse
[100%] Built target vm-sound-pulse
lightnin 08-07-12 01:51 Partly because of the problems on 64 bit machines, the Scratch startup script in /usr/bin/scratch on the latest Debian Scratch package is setup to use the OSS sound plugin (within "padsp", a pulseaudio compatibility wrapper if pulse is present). You'll need to edit that script to use vm-sound-pulse, or just execute the startup command as follows (assuming Suse installation has similar locations / squeak vm revs)

/usr/lib/squeak/4.4.7-2357/squeakvm -encoding UTF-8 -vm-display-x11 -plugins /usr/lib/scratch/plugins/:/usr/lib/squeak/4.4.7-2357/ -vm-sound-pulse /usr/share/scratch/Scratch.image
lewis 08-08-12 00:22 I cannot test on my system but I am quite confident that the problem is caused by variable declarations that cause 8-byte pointers to be stored in 4-byte integer variables. I think that it can be fixed simply by changing function declarations in platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c to match the prototypes in Cross/plugins/SoundPlugin/SoundPlugin.h.

The VM crashes are the result of primitive calls in the plugin that pass 8-byte pointers to support code functions that treat them as 4-byte integers.
lewis 08-08-12 00:37 platforms-unix-sound-pulse-sqUnixSoundPulse.c.tar contains an update to sqUnixSoundPulse.c that should fix the type declaration problems. It does not include the structure alignment change, as this very likely will prove unnecessary.

This needs to be tested on Ubuntu with Scratch.
lewis 08-08-12 11:59 Patch included in trunk SVN 2581, tested and confirmed by Derek O'Connell
http://lists.squeakfoundation.org/pipermail/vm-dev/2012-August/011097.html [^]
7697 Tools minor always 07-18-12 20:14 07-26-12 06:57 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Deleting a method in a MessageSet doesn't highlight another method If you're viewing implementors-of some stale method, you can't repeatedly alt-x to delete all the methods: you have to alt-x, down, up, alt-x. If there's only one method, you have to click the method.

It looks almost like another method's selected - the "newly selected" method is light blue - but a "really selected" method is dark blue.
FrankShearar 07-19-12 13:39 http://source.squeak.org/inbox/Tools-fbs.415.mcz [^] contains a possible fix.
FrankShearar 07-26-12 06:57 Committed to Trunk as Tools-fbs.415.
7699 Tools minor always 07-20-12 08:45 07-26-12 06:56 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Deleting a system category jumps list to the beginning This breaks flow. Instead, just try select the same-index category in the new list, if possible.
FrankShearar 07-20-12 09:33 http://source.squeak.org/inbox/Tools-fbs.416.mcz [^] has a proposed fix.
FrankShearar 07-26-12 06:56 Committed to Trunk as Tools-fbs.417.
7693 Kernel minor always 07-10-12 01:18 07-10-12 02:41 jrm lewis normal resolved none none 4.2 fixed 0 DateAndTime readFrom: does not recognize $Z as a valid timezone designator. Method readFrom: in Class DateAndTime needs modification in order to interpret $Z as a valid time zone designator. Change set with modified method and associated test attached. DateAndTime.1.cs (3 KB) 01-01-70 00:33
lewis 07-10-12 02:41 Patch adopted in Squeak trunk
7689 XML-Yaxo minor always 02-19-12 01:09 07-06-12 22:41 jrm normal new none none 4.1 open 0 XMLDOMParser drops information Squeak 4.1 #9957
Inspect: XMLDOMParser parseDocumentFrom: (ReadStream on:
' <links>
      <link type="mediaselector">http://www.bbc.co.uk/mediaselector/4/mtis/stream/b006tm9y</link> [^]
elementsAndContents displays:
<link type="mediaselector"/> </links>
The example is a snippet of XML from 'http://www.bbc.co.uk/radio/aod/availability/radio4extra.xml'. [^] The same result occurs when processing the entire file. I created this smaller example hoping I could debug the code, but I get lost in parseDocument.

If the example is modified to includ a #> after the the string <link, I get results more like what I expect. I ran the URI through an XML validator at http://validator.w3.org [^] and it passed.
jrm 02-23-12 17:19 The example in the description works as expected in Pharo-1.3-13315.
jrm 07-06-12 22:41 As of Squeak 4.3 #11860, this seems to be resolved.

I performed the test I described and got the results I expected.
7692 Documentation minor always 06-19-12 01:31 06-19-12 01:31 edward casey normal assigned none none trunk open 0 Opening morphic halos on OSX is opt-click Opening up morphic halos on OSX (Mac) is done by opt-click and not cmd-click as the documentation states.

Here’s a screenshot of what I’m talking about: http://cl.ly/0F0g1t3v0A121V0y3D1v [^]

(I’m super new to Smalltalk and Squeak – is there a place where I can just write a patch? How do I do that?)
Screen Shot 2012-06-18 at 9.28.46 PM.png (29 KB) 01-01-70 00:33
7691 VM major always 04-27-12 12:24 04-28-12 00:32 lewis lewis normal resolved none none fixed 0 JPEGReadWriter2Plugin off-by-one bug crashes VM Fix for an off-by-one bug is provided on vm-dev:

http://lists.squeakfoundation.org/pipermail/vm-dev/2012-April/010470.html [^]

Diagnosed and fixed by Páhi András pahia at t-online.hu
Confirmed by Juan Vuletich
Fix is for the generated plugin (VMMaker), provided as C code. Need to incorporate back into the SLANG. JPEGReadWriter2Plugin.c (21 KB) 01-01-70 00:33
lewis 04-27-12 12:28 From: P?hi Andr?s <pahia@t-online.hu>
To: <vm-dev@lists.squeakfoundation.org>
Date: Fri, 27 Apr 2012 10:02:43 +0200
Subject: [Vm-dev] JPEGReadWriter2Plugin crash fixed


I have found the origin of various crashes in the Squeak VM, which is related to the JPEGReadWriter2Plugin.
The hunt begun with Juan's Cuis 4.0 release, see the emails exchanged below and the description.

I have attached the fixed C source, but the fix should go in the VM sources, because the code is
generated as I see. Please include the fix in the VM sources.

Andras Pahi
lewis 04-28-12 00:30 This bug was fixed by John McIntosh and incorporated into VMMaker in Oct 2010, but is not yet merged into the Cog branch. Need to update the oscog branch with changes from trunk VMM. A number of changes for JPEG plugin were merged from oscog in VMMaker-dtl.191, then John's changes were added in VMMaker-dtl.192. John's changes need to be added back to oscog. The VMMaker commit was here:

Name: VMMaker-dtl.192
Author: dtl
Time: 9 October 2010, 2:26:51 am
UUID: e22782de-efc8-4029-b1ec-61588fb91d37
Ancestors: VMMaker-dtl.191

VMMaker 4.3.6

Merge John's 64-bit changes for JPEGReaderWriter2Plugin.
Add unit tests based on Bert's test in original bug report.

With these patches JPEGReaderWriter2Plugin works with the VM compiled in either 32-bit or 64-bit mode.
lewis 04-28-12 00:32 Bug was resolved by John McIntosh, added to VMMaker in 2010. John's update needs to be incorporated into oscog branch for Cog VMs.
7690 minor always 02-19-12 09:43 02-19-12 09:43 edgardec normal new none none open 0 [ENH] Improve the browsing of the remote .image OtherBrowser>>#potentialClassNames

    "Answer the names of all the classes that could be viewed in this browser. This hook is provided so that HierarchyBrowsers can indicate their restricted subset. For generic Browsers, the entire list of classes known to Smalltalk is provided, though of course that really only is accurate in the case of full system browsers."

    ^ wormhole classNames

I sugest override findClass and add logic for when you hit the browser button only see the classes in the remote image.
7687 FFI minor always 01-22-12 11:24 01-22-12 11:24 Hans-Martin andreas normal assigned none none 4.2 open 0 Incompatibility between OpenGL extension management and threaded FFI The threaded FFI introduces an inst var "stackSize" in ExternalFunction. normally this variable gets assigned -1 in the threaded function invocation (ThreadedFFIPlugin>>#ffiLoadCalloutAddress:). However, if the handle of the external function is being set using a different mechanism (such as the OpenGL extension manager) the stackSize inst var is not being set but stays at its initial value 0, which causes an error FFIErrorCallFrameTooBig to be signaled.

Attached is a fix (sets stackSize to -1 when a new handle is assigned).
ExternalFunction-setHandle.st (0 KB) 01-01-70 00:33
7686 VM crash always 01-20-12 14:53 01-20-12 19:08 luki andreas normal assigned none none 4.1 open 0 Crash in Windows Squeak VM 4.1.1 Steps to reproduce:

* downloaded the pristine Cuis 3.3 image (Cuis3.3-1024.zip)
* start the Windows Squeak VM 4.1.1 from Jul 27 2010
* click on maximize button of the Squeak VM window.

The fatal VM error message box appears. The crash is 100% reproducible on my machine.

The system is Windows 7 Professional 64 bit, my primary display is 1280x1024, secondary display is 1920x1080. The crash happens when the Squeak window is positioned on either primary or on secondary display.
crash.dmp (15 KB) 01-01-70 00:33
7685 Morphic major always 01-13-12 15:43 01-13-12 16:26 unoduetre normal new none none 4.2 open 0 Two (maybe unrelated) bugs with morphs layout Consider the following code (do not run it yet):

morph1:=Morph new.
morph1 position: 100 @ 100.
morph1 extent: 100 @ 100.
morph1 color: Color blue.
morph1 layoutPolicy: TableLayout new.
morph1 openInWorld.

morph2:=Morph new.
morph2 height: 75.
morph2 color: Color red.
morph2 hResizing: #spaceFill.
morph1 addMorph: morph2.

morph3:=Morph new.
morph3 position: 175 @ 100.
morph3 height: 50.
morph3 color: Color green.
morph2 addMorph: morph3.

morph1 width: morph1 width + 25.

morph1 width: morph1 width + 25.

Now in the Workspace run step1, step2, step3 and step4, but do NOT run them at once. You should see what is in the image Bug1.gif (attached).
This is wrong because of
morph2 hResizing: #spaceFill.
Now if you do step5 you will see what is in the image Step5.gif
You should notice the big jump by 50 pixels (instead of 25).
The source of this bug is the following line

cellBounds = self fullBounds ifTrue:[^self]. "already up to date"

in Morph>>layoutInBounds:

Now please consider the second bug.
Run step1, step2, step3 at once in workspace.
You should see what is in the image Bug2.gif
Bug1.gif (1 KB) 01-01-70 00:33
Step5.gif (1 KB) 01-01-70 00:33
Bug2.gif (2 KB) 01-01-70 00:33
unoduetre 01-13-12 15:46 Also notice what happens if you change steps 4 and 5 to:
morph1 width: morph1 width + 26.
unoduetre 01-13-12 16:26 Even after removing:

cellBounds = self fullBounds ifTrue:[^self]. "already up to date"

The following line still causes problems:

cellBounds extent = self fullBounds extent "nice fit"
ifTrue:[^self position: cellBounds origin].

The bug number 1 is removed by commenting both line, but I don't know if it is a good idea, because I don't know Morphic enough. Do those lines really speed things up? Are the conditions of this bug too specific to repair it?
7683 Morphic text always 12-18-11 21:48 12-20-11 01:54 seandenigris normal new none none trunk open 0 Morph>>stepTime Comment: explain that it's only a recommendation See http://forum.world.st/Implementing-a-simple-timer-td4202411.html [^] Morph-stepTime.st (0 KB) 01-01-70 00:33
wiz 12-20-11 01:35 ElapsedTimer commentStamp: 'wiz 4/25/2009 18:44' prior: 0!

An ElapsedTimer is a very simple timer. It is responsible for knowing only two messages.

The useage is:

timer := ElapsedTimer new .

timer timeElapsed. "to start timing."

timer timeElapsing > timeLimit . "to test if a certain time has elapsed"

thisRun := timer timeElapsed . "to collect elapsed time and reset timer."

The advantages of having this class is the ability to have different timers each with their own state. Have one timer for laps while another one times the whole run.

I have found that really simple protocols suit my style and provide good maintainability.

You may want to repackage the class. Right now it is stored in my personal project name space.

Hth, --Jerome Peace
wiz 12-20-11 01:53 In the context of the question "how to use morphic step"

The morph would hold onto one or two timers.
One timer would be used to check if enough time has elapsed.
Once it has reset the timer and trigger the update.
The second timer would be started/reset only at the beginning of the time display. It would keep running track of how much time has passed since the starting event. That could then be added to the base time and shown as a the time string.

You could even keep a third timer to diagnose how often your morph is being stepped and create a histogram of times between steps. Then you'd be learning something!

Yours in service and curiosity, --Jerome Peace
7656 Kernel minor sometimes 08-11-11 18:21 12-16-11 13:49 wiz low new none none trunk open 0 User interrupts key does not always work the first time it is pressed. I have only anecdotal evidence at present.

When running a buggy program that does not stop, pressing user interrupt usually does not work. Often it doesn't work until the third press and then a predebug box comes up saying we have interrupted the finalization process. This stops the runaway calculation.
With out doing anything else that I am aware of and after some time has passed, two other predebug boxes pop up. One of which seems associated with the original runaway process.
So my speculation is that the first time the interrupt key is pressed it is noted but it doesn't stop anything. The second time it interrupts the debug process but doesn't stop anything either. The third time it interrupts the finalization process and that brings other things to a halt giving the vm some breathing room. Then it catches up with the notifications probably in reverse chronological order.

Can anyone confirm, contradict or add to these observations?
lewis 12-16-11 13:49 See December 2011 thread on squeak-dev. Andreas Raab offers this guidance:

Date: Fri, 16 Dec 2011 08:00:03 +0100
From: Andreas Raab <andreas.raab@gmx.de>
Subject: [squeak-dev] Re: The broken user interrupt, or the saga of 100000 factorial.

On 12/16/2011 3:33, Levente Uzonyi wrote:
>On Thu, 15 Dec 2011, Christopher Oliver wrote:
>>On Thu, 15 Dec 2011 11:35:55 +0100
>>I added a tty output debug to
>>MorphicProject>>interruptName:preemptedProcess:, and I found
>>that Processor>>preemptedProcess occasionally answers the system weak
>>array finalization process. Yikes! This isn't what we want to debug at
>>all. Are we being adequately clever
>>in determining which process to debug?
>I'm pretty sure that the currently running process is interrupted. After
>GC (which happens often during calculations with LargeIntegers) this is
>likely to be the finalization process.

Correct. To make matters worse, when an interrupt is signaled in the
midst of GC, the signal will be delivered after the GC cycle completes,
therefore almost guaranteeing that the interrupted process will be the
finalization process.

And so the determination of the process to be interrupted is moderately
stupid. What we'd really need to do is to start a slightly leaner
version of CPUWatcher, i.e., instead of blindly interrupting whatever
process is active, start sampling the running processes and after a
short while (100-500 ms) decide which process to kick[*]. Plus, after
that ensure that the UI is actually responsive so that the user can
interact with the system and if not, keep kicking processes unless the
system becomes interactive again. Alas, not a trivial task to be solved.

[*] A more radical version would suspend *all* user processes and let
the user decide which of the suspended processes to inspect. This might
have some interesting side effects though...

  - Andreas
7680 OS-Mac major have not tried 11-17-11 21:55 12-06-11 19:00 dennisdjensen normal new none none 4.2 open 0 MultiByteFileStream(StandardFileStream)>>primSize: failed On a freshly downloaded All-In-One Squeak v4.2, whenever I Do-It or Inspect on a piece of code - whether in a Workspace or in a tutorial from the help browser (on XML) where I found it first - I get the error on #primSize: in the summary. When I open the debugger, it looks like this, where id is nil:

primSize: id
    "Answer the size of this file."

    <primitive: 'primitiveFileSize' module: 'FilePlugin'>
    self primitiveFailed

In the tutorial (the only one on XML), I tried to inspect (CTRL-i) this piece of code:

    | doc |
    doc := HTTPClient httpGetDocument: 'http://source.squeak.org/trunk/feed.rss'. [^]
    XMLDOMParser parseDocumentFrom: (ReadStream on: (doc content)).

It does not matter what the code is, however. Even something as simple as 2 + 2, and choosing Print-it, results in the same error. However, when I do Transcript show: 'Hello, World!'; cr. in a Workspace, the transcript window _does_ show the string and return carriage, although the same error pops up!

I am a rookie, and have never used Squeak or any other Smalltalk system before, although I do know a bit about Smalltalk from books and articles.

This is serious enough to make the whole system unusable for me. Is there any consensus about what to do in such situations? Should I update squeak as a work-around, unless there is a simple work-around or a configuration that can be done? I have a laptop with Windows 7 I intend to try the All-In-One installation on as well, and see if the same issue can be reproduced.
SqueakDebug.log (8 KB) 01-01-70 00:33
dennisdjensen 11-18-11 16:59 I just tried on MS Windows 7 with the same Squeak v4.2 All-In-One unzipped. Right-clicking behaves very differently on MS Windows 7 where the halos popup. I am not sure about the different configurations, but at least do-it, inspect, print-it and so far work as expected on Windows, so the issue seems to be for Mac OS only.
leves 12-02-11 10:15 Seems to be an issue with limited access to the changes file. Could you please evaluate the following expression in a workspace on your Mac and paste the result here?

SourceFiles collect: [ :each | each ifNotNil: [ each isReadOnly ] ] as: Array
dennisdjensen 12-04-11 02:21 SourceFiles

  evaluates to

an ExpandedSourceFileArray(MultiByteFileStream: '/Applications/Squeak 4.2 All-in-One.app/Contents/Resources/SqueakV41.sources' MultiByteFileStream: '/Applications/Squeak 4.2 All-in-One.app/Contents/Resources/Squeak4.2-10966.changes')


SourceFiles collect: [ :each | each ifNotNil: [ each isReadOnly ] ] as: Array

  evaluates to

#(true false)

That is strange, because the file permissions for SqueakV41.sources by "ls -l" in a Terminal are

-rwxr-xr-x 1 Dennis staff 26002240 17 Apr 2010 /Applications/Squeak 4.2 All-in-One.app/Contents/Resources/SqueakV41.sources

and I am logged in as Dennis when running Squeak.
dennisdjensen 12-04-11 02:25 Oups!

-rw-rw---- 1 Dennis staff 2310018 4 Dec 03:19 /Applications/Squeak 4.2 All-in-One.app/Contents/Resources/Squeak4.2-10966.changes

I am not sure I understand the answer of SourceFiles#collect:as:

leves 12-06-11 14:51 The sources file should be opened as readonly and the changes file be writeable, so the result you had looks fine. Can you please attach the SqueakDebug.log file right after the error occurs?
dennisdjensen 12-06-11 19:00 I could only find one SqueakDebug.log from 17 Nov 2011 when I downloaded the image and VM. I was not able to reproduce the error, and in fact this time things worked, do-it, print-it, inspect-it and so forth, and I can see halos as well. Strange.

I tried to remember if I had done anything differently, and the only thing I can recollect is that the previous time I ran all the TestCaseS in the TestRunner before trying the tutorial. I did this again with the same test result as before 2831/2343 passes, but I can still not reproduce the error afterwards.

I was able to go through the rest of the tutorial (Retrieving XML data) without any trouble. Everything seems to work fine.

I can no longer reproduce the bug, or anything resembling the previous behavior. I am sorry for any inconvenience I may have caused.
7678 Tools minor always 11-16-11 05:14 12-06-11 14:49 jgon leves normal resolved none none trunk fixed 0 Pressing enter in an empty selector browser that has been edited brings up a debugger When using the selector browser you can enter text in the search field and the field will be marked as edited. If you then delete all of the text out of the search field it will still be marked as edited, and if you hit enter to accept the search a debugger will pop up.

This happens because the contents:notifying: method does not guard against getting a list of tokens that is empty.
My fix for this issue just does the simplest thing, which is guard against an empty list of tokens. Not knowing much about the selector browser I am not sure if there is a better fix for this. Tools-jmg.386.mcz (528 KB) 01-01-70 00:33
leves 12-06-11 14:49 Fixed in Tools-ul.386. The bug also occured when the input consisted only of whitespaces, so the easiest solution was to trim unnecesary blanks.
7645 VM minor always 06-08-11 13:37 11-17-11 02:20 seandenigris lewis normal resolved none none fixed 0 OSProcess tests hang on Mac Cocoa VM ( From http://forum.world.st/OSProcess-on-1-2-tp3569458p3569458.html [^] :
> For the Cocoa VM (, TestRunner hangs again. One hanging test was
> UnixProcessTestCase>>testClassForkHeadlessSqueakAndDo on "[p isRunning] whileTrue: [(Delay
> forMilliseconds: 100) wait]."

>These were the values for that VM:
> #('CommandShell versionString ==> 4.4.15' 'OSProcess versionString ==> 4.4.2'
> 'UnixOSProcessPlugin 6 February 2011 (e)' 'OSPP versionString ==> 4.4.3' 'nil' 'AIO plugin
> versionString ==> nil' 'nil' 'XDCP versionString ==> nil')
lewis 06-11-11 13:38 This was caused by improper handling of #forkSqueak failures in OSProcess. I have updated both OSProcess and CommandShell to resolve this and a number of other problems with the unit tests when running on OS X. With these updates, you should expect all tests to run to completion, and you should expect numerous test errors and failures associated with all of the tests that rely on #forkSqueak for interprocess testing (e.g. testing file locks by forking another Squeak to interact with the parent).

Note that #forkSqueak and XDisplayControlPlugin are not supported for the Mac VM, and I have no plans to change this. At this time, #forkSqueak is expected to work correctly *only* on the Unix standard interpreter VM.
lewis 11-17-11 02:20 These issues for OS X were addressed in OSProcess version 4.4.3 (update notice below). Please open another report (or reopen this one) if additional problems are found. Thanks.

Name: OSProcess-dtl.62
Author: dtl
Time: 10 June 2011, 4:20:29.871 pm
UUID: 55b4ea20-a52a-40a4-b5ca-b3a7e9741c06
Ancestors: OSProcess-dtl.61

OSProcess 4.4.3
Fix forkHeadlessSqueak to fail cleanly on OS X to prevent unit test hang.
Update unit tests to work around OS X differences in directory naming and file protections.
Catch warnings in unit tests to permit them to run on OS X without UI interaction. Many test failures are expected on OS X due to lack of forkSqueak and XDisplayControlPlugin capability on that platform.
7655 Kernel major always 08-11-11 18:11 11-17-11 01:55 wiz low new none none trunk open 0 A mother for user interupt bugs and problems Pressing the user interrupt key works sometime but not always as intended.
This is a parent for reports on this issue. So all the information can be accessed at once.
7679 Kernel minor always 11-16-11 12:34 11-16-11 12:34 lewis normal new none none open 0 Storing on a ReferenceStream may fail if stream is non-positionable For certain objects, storing on a ReferenceStream will fail if the underlying stream is not positionable. This causes problems when serializing objects directly over a non-positionable stream such as an OS pipe or a socket stream.

The attached ReferenceStreamTest-dtl.1.cs demonstrates the issue.
This issue has existed for a long time and probably is related to some workarounds implemented long ago in ReferenceStream>>beginInstance:size: and DataStream>>writeRectangle (and possibly others). The issue was exposed when testing RemoteTask <http://wiki.squeak.org/squeak/6176> [^] which serializes objects on a ReferenceStream on an OS pipe. ReferenceStreamTest-dtl.1.cs (5 KB) 01-01-70 00:33
7572 Compiler minor always 11-15-10 08:22 11-15-11 03:38 leves leves normal resolved none none trunk fixed 0 Block-local unused temporaries are not handled properly After accepting changes to a method in a browser, that has unused temporary variables, the parser used to ask if you want to remove them. This doesn't happen if the method has only block-local temporaries. The following example compiles without the question:

Object >> foo

    [ | bar | ] value

If the method also has unused method-local temporaries, then the Parser will ask if you want to remove the unused block-local temporaries, but they won't be removed if you answer yes. If ask the parser to remove the method-local temporaries, then it will ask the about the block-local temporaries twice. Example:

Object >> foo

    | foo |
    [ | bar | ] value

Another nice enhancement would be to remove the remaining || if all temoraries were removed. For example:

Object >> foo

    | foo |

will become

Object >> foo

    | |

after the parser removes the temporary.
Parser-removeUnusedTemps-removedUnnecessaryNotification.st (1 KB) 01-01-70 00:33
parser-lw.1.cs (12 KB) 01-01-70 00:33
ParserErrorCorrection-lw.1.cs.gz (1 KB) 01-01-70 00:33
ParserErrorCorrectionIncludingBothFixes-lw.2.cs.gz (3 KB) 01-01-70 00:33
chris 11-16-10 22:24 I prefer that we use syntax-highlighting to indicate an unused temporary. I find the computer prompting me for such a thing to be disruptive, especially when I'm working in a workspace and commenting out portions.

How ridiculous is it for the software to ask, "do you want me to delete it?" and, after selecting "yes", it says, "sorry I can't do that." It bugged me twice to tell me some manual intervention is required?! Awful.
leves 11-17-10 03:40 I think it's possible to modify Shout to highlight unused temporaries differently. The question is sometimes useful, so I wouldn't remove it. I like the feature, that the compiler can remove the unused temps. So if you want to get rid of the question, then add a preference for it (override the defaultAction of UnusedVariable).
Lars 05-07-11 19:04 For a seminar on development processes in open source projects, I choose this bug to solve it.
But because my account status is reporter, I can not assign me to this bug. Therefore this Note...

leves 05-08-11 02:18 Thanks Lars, it would be great to have this fixed. I guess only admins can assign this issue to you (I can only assign it to other "developers", to the "reporter" or to myself).
Note that the description of the issue got a bit messed up. It should be like: "If you ask the parser to remove the method local temporaries, then it will ask you about the block local temporaries twice."
Lars 05-19-11 17:53 I followed the debugger to the points of interest for these bug(s) and have some notes:
The attached file is a change-set to remove the annoying notifications, if an unused but assigned temporary is tried to be removed. In this version, the parser doesn't ask anymore, if there is an assignment to the temporary.

The parser asks twice for block local temporaries, because after the removal of temporaries (after source code changes actually), the changed source is parsed again. And because the block local temporaries are still unused, they are queried again.

Now to the problem which seemed main to me: Not removing the block local temporaries.
The block-temps are not removed, because the position of temporaries is saved to tempsMark during parsing only for the main method temp declaration.
I'll now make this tempsMark a list, to enable removal of block local temporaries as well. Afterwards, I'll look into the parser to see why removal is only queried if there are method local temporaries (case one in this issues description)
Lars 05-27-11 18:34 I found a solution.
The attached File parser-lw.1.cs contains the changes to the class Parser as well as a TestCase named BlockLocalTemporariesRemoval, because there has not yet been a Test for the Parser.

The changed Parser now can remove block-local and method-local temporaries, even if no method-local temporaries exist. It keeps the tempsMarker-Variables up to date and removes empty temp-definitions after removing unused variables.

The Test-Class has to implement the parsers requestor interface, therefore so many empty methods.

I added accessors to parser because I'm iterating over BlockNodes but somehow hte MethodNode generated by the Parser never had the tempsMark-variable set, therefore the Parser itself is added to the Collection I'm iterating over.

The problem about asking several times for temp removal originates from the fact that after changing the parsed method's source, it is reparsed and thus the user is asked again.

If there are any question, feel free to add notes here.

Lars 05-28-11 11:45 While preparing my talk, I noticed that I fixed the wrong defect. Therefore here another version with a fix to the n-times-asking problem.
Sorry for spamming all over this bug report.
leves 06-01-11 21:09 Great progress Lars! Is it possible to release these changes under the MIT license, so we can integrate them into the next Squeak release?
Lars 06-01-11 21:11 I'd be very happy. You may release it under the MIT or any other Open Source Definition compatible license.
leves 06-01-11 21:31 Thanks, I'll integrate them to the Trunk soon.
leves 11-15-11 03:38 Integrated the changeset: Compiler-ul.220 & Tests-ul.134.
7675 Tools minor always 09-25-11 17:23 11-07-11 13:19 FrankShearar leves normal resolved none none trunk fixed 0 TimeProfileBrowser doesn't understand #shoutParserClass If you open a TPB, say by TimeProfileBrowser spyOn: ["my block"], you will see a MessageSet containing some lines like "**Leaves**".

That's fine. What's not fine is selecting these kinds of lines and seeing "MessageNotUnderstood: TimeProfileBrowser(Object)>>doesNotUnderstand: #shoutParserClass.

leves 11-07-11 13:19 Fixed in Tools-ul.385.
7674 Browser minor always 09-10-11 13:59 10-05-11 08:47 FrankShearar leves normal resolved none none fixed 0 Pressing the 'o' character with mouse over the class list (with no selected class) throws a subscript out of bounds error Really, it's any character not an initial character of a class in the list. So given #(Bar Foo Quux) any alphabetic character not in #(b f q) will do the trick.
leves 10-05-11 08:47 In PluggableListMorph >> #basicKeyPressed: when #getCurrentSelectionIndex returned 0 and slowKeyStroke was true, then newSelectionIndex was initialized to 0 instead of 1. Fixed in Morphic-ul.582.
7673 Browser minor always 09-10-11 13:44 09-11-11 13:55 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Change a class name through the "rename class" menu item doesn't update code pane Given a class Foo renamed to Bar, the class description still looks like

Object subclass: #Foo <snip>

If you select another class and then Bar, the code pane contains correct information.
FrankShearar 09-10-11 13:56 http://source.squeak.org/inbox/Tools-fbs.378.mcz [^]
FrankShearar 09-11-11 13:55 leves uploaded to Trunk: http://source.squeak.org/trunk/Tools-fbs.378.mcz [^]
7666 Collections trivial always 09-06-11 16:37 09-11-11 08:37 Lars FrankShearar normal resolved none none 4.2 fixed 0 typo in comment Dictionary class>>newFromPairs: has a typo in its comment:

     Answer an instance of me associating (anArray at:i) to (anArray at: i+i)
     for each odd i. anArray must have an even number of entries.

It should be instead:

     Answer an instance of me associating (anArray at:i) to (anArray at: i+_1_)
     for each odd i. anArray must have an even number of entries.
FrankShearar 09-09-11 10:51 Inbox: http://source.squeak.org/inbox/Collections-fbs.456.mcz [^]
FrankShearar 09-09-11 11:19 leves added to trunk: http://source.squeak.org/trunk/Collections-fbs.456.mcz [^]
7668 major always 09-08-11 16:17 09-09-11 16:19 smalltalktelevision normal new none none open 0 MessageNotUnderstood: ByteString>>activeClass ClassID, a subclass of ByteArray, understands the message #activeClass. In:

       theClass id activeClass definition

the result of the "theClass id" message should produce a subclass of ByteArray. It's producing an instance or subclass of ByteString, which cannot understand #activeClass.
smalltalktelevision 09-09-11 16:19 I'm going to ask that this issue be removed, as I think it was created by me.

Some of the problems I've been having have come from not including this code written in the startup Workspace for the Wormhole server:

(self minimumSubjectPeer classWithBaseID: EditHistory baseID) connect

For reasons unknown I haven't added this when I started the Wormhole server to connect to the subject.image and history.image. I think this has meant the history image has been unreachable. Having started to do that Spoon works much better.

7669 Any minor always 09-09-11 11:16 09-09-11 11:17 FrankShearar leves normal assigned none none trunk open 0 Installer mc unload: 'MyPackage' broken Levente Uzonyi reports:

> There's a DNU: #freeSomeSpace, which is easy to fix, and there's
> #fixObsoleteReferences, which is too simple to work as expected.
7667 Kernel minor always 09-07-11 11:26 09-08-11 14:16 FrankShearar FrankShearar normal resolved none none fixed 0 ScaledDecimal newFromNumber: 0.0 scale: 0 can't print Evaluate the following:

0s0 "=> 0s0"
ScaledDecimal newFromNumber: 0 scale: 0 "=> 0s0"

0.0s0 "=> 0s0"
ScaledDecimal newFromNumber: 0.0 scale: 0 "=> MNU: SmallInteger doesn't understand printTruncatedOn:showingDecimalPlaces:"

The MNU happens because in ScaledDecimal class >> #newFromNumber:scale: we say

    "..." aNumber asFraction "..."

and when aNumber = 0.0, aNumber asFraction = 0, which is a SmallInteger and not a Fraction.
FrankShearar 09-08-11 14:16 Nicolas Cellier fixed this: Kernel-nice.614.mcz
7664 block always 08-30-11 19:31 08-30-11 19:38 FrankShearar craig normal assigned none none open 0 Ubuntu Lucid: can't find vm plugins $ uname -a
Linux andrad 2.6.32-33-generic 0000072-Ubuntu SMP Fri Jul 29 21:08:37 UTC 2011 i686 GNU/Linux
$ ./spoon.sh
could not find module vm-sound-OSS

Playing around (like commenting out sound-invoking stuff) just causes other modules to not be found.
craig 08-30-11 19:38 Bert... help? :) I'm trying to use your Squeak 4.2 all-in-one packaging, with the Flow plugin added. Not sure why it isn't working.
7657 crash always 08-16-11 18:20 08-30-11 19:21 craig craig urgent feedback none none fixed 0 Flow plugin fails to load for Spoon 3 alpha 1 on some MacOS systems On some Macs, the Flow VM plugin doesn't load properly. That's fatal
because it contains a corrected version of the idle-loop's relinquish
primitive (required for headless remote messaging to work at a decent
speed), and the headful UI depends on that primitive working properly.

We need info about this from affected users (from stdout, gdb, XCode, etc.,
as much host-OS info as is available). Craig can't reproduce this on his
Mac (early-2009 MBP, 10.6.8).
craig 08-16-11 18:50 Bert noticed from 'otool' output that another library that Flow uses was missing (portmidi, it was in Craig's /usr/local/lib). Will fix in 3a2.

craig 08-17-11 23:24 Fixed in 3a2.

I corrected the Flow plugin for the Mac; it uses a dynamic library
(portmidi) that was loaded on my machine from /usr/local/lib/. Now it
loads from the Resources folder for the Flow plugin. This involved
'install_name_tool' and a plugin rebuild. Thanks to Bert for mentioning
craig 08-30-11 19:21 Edgar reports plugin load failure on "every machine I own". Edgar: please provide OS details?



7662 feature always 08-23-11 11:05 08-30-11 19:20 Saijanai craig normal assigned none none open 0 Documentation for the latest version is confusing/non-existent I've managed to download and test the spoon 3 alpha 3 but I'm not quite sure what to do next. The book suggests that you can send arbitrary messages to the remote image but I don't understand how to do that.
craig 08-30-11 19:19 If you've read the release notes, and managed to browse anything in the minimal object memory ("subject") by following the instructions in the open inspector, you've done all I wanted people to do with 3a3. You might also browse the classes mentioned in http://netjam.org/spoon/naiad [^] , but otherwise I'll have more things you for to try in the next alpha release.

Is the text in the inspector window confusing?


7663 minor always 08-30-11 19:15 08-30-11 19:16 craig craig normal assigned none none open 0 modularization list doesn't include abstract class with no methods http://thiscontext.wordpress.com/initial-spoon-modularization/ [^] doesn't include abstract classes with no methods, like Magnitude.
7661 minor always 08-20-11 13:56 08-20-11 23:48 bert craig normal assigned none none open 0 Decompiler MNU String class>>key To reproduce, browse ByteArray>>asString in the minimal image.
7659 crash always 08-16-11 22:55 08-17-11 23:28 jecel craig normal assigned none none open 0 Spoon 3 alpha 1 crashes on minimal images on Windows XP The VM minimal\processors\windows\spoon.exe crashes with either image in minimal\memories with no indication of what went wrong. Using the VM in the top directory, Squeak.exe (which works fine with the image "Contents\Resources\Spoon 3 alpha 1.image") also crashes with the minimal images, but it produces a more informative error message (bytecode 211, primitive 0) and the attached log file. crash.dmp (3 KB) 01-01-70 00:33
craig 08-17-11 23:26 Indeed, only the Spoon VM should work with the subject and history memories; they use remote-messaging support on startup that doesn't exist in the stock VMs.

Anyway, I'm investigating.
7660 minor always 08-16-11 23:03 08-17-11 23:28 jecel craig normal assigned none none open 0 Spoon 3 alpha 1 scripts in Linux have problems with spaces in directory names Expanding the .zip file results in a directory called "Spoon 3 alpha 1.app" which causes problems for both squeak.sh and minimal/processors/linux/bin/spoon.sh since the utilities that split the names and put them together don't handle spaces very well. So the VM ends up being invoked with an image named "3".

Just renaming the top directory not to have spaces seems to solve this issue. Some files still have spaces in their names, but that probably won't be a problem (other issues prevented my from testing this).
craig 08-17-11 23:28 Will rename the top-level directory in 3a3 (as ugly as that will look on other host platforms...).
6987 VM major always 03-22-08 05:22 07-27-11 12:56 andreas lewis normal assigned none none open 0 signed32BitValueOf:, signed64BitValueOf: etc. broken The attached changes fix the following methods:
* Interpreter>>signed32BitValueOf:
* Interpreter>>signed64BitValueOf:
* Interpreter>>signed64BitIntegerFor:
* Interpreter>>positive64BitIntegerFor:
All of the above are broken to varying extent. The first two fail to check for boundary conditions, i.e., if the integer has 32/64 bits of magnitude instead of 31+sign/63+sign. The latter two create non-normalized integers which will later fail to compare correctly.
FFITestCase.st (2 KB) 01-01-70 00:33
mathfixforlowestlongandlonglong.1.cs (4 KB) 01-01-70 00:33
SignedIntFixes.3.cs (5 KB) 01-01-70 00:33
Int32Fixes-dtl-M6987.1.cs (2 KB) 01-01-70 00:33
Int64Fixes-dtl-M6987.2.cs (3 KB) 01-01-70 00:33
IntegerArrayTestCase-dtl-M6987.8.cs (34 KB) 01-01-70 00:33
FFI-primitiveFFIIntegerAt-dtl-M6987-M7237.1.cs (3 KB) 01-01-70 00:33
Interpreter-signed32BitIntegerFor-dtl-M6987.1.cs (2 KB) 01-01-70 00:33
tim 05-27-08 17:50 Changes accepted in VMMaker-tpr.71
johnmci 11-26-08 06:20 John notes:

I was writing some Sunits for the Alien stuff and found

alien signedLongAt: 1 put: -1*16r80000000. " -2147483648"
triggered by value < 0 ifTrue:[^self primitiveFail].
as coded below
since value is -2147483648

range is Signed: −2,147,483,648 to +2,147,483,647
http://en.wikipedia.org/wiki/Integer_(computer_science) [^]
johnmci 11-26-08 06:22 Also note Alien has same tests for byte, short, long, *AND* long long. long long is NOT supported by FFI at this time
johnmci 11-26-08 06:59 Add mathfixforlowestlongandlonglong.1.cs which handles the case of −2,147,483,648 and −9,223,372,036,854,775,808

The existing code would fail for signed32BitValueOf:
both signed64BitIntegerFor: and signed64BitValueOf:
lewis 11-28-08 22:48 Not directly related to the problem at hand, but it's worth noting that the test case (FFITestCase.st) crashes the VM on a 64-bit machine. This is related to issue 0007237.

(ByteArray new: 4) unsignedLongAt: 1 put: 7. ==> boom
lewis 12-04-08 04:46 Files uploaded:

IntegerArrayTestCase-dtl.3.cs - Additional tests to verify IntegerArray. Note, some tests will fail due to problems with primitive fallback code in IntegerArray, this should be the subject of a separate bug report.

SignedIntFixesPatch-dtl.4.cs - Fix #signed32BitValueOf: and #signed64BitValueOf: to handle largest negative magnitudes properly.

See also VmUpdates-1008-dtl.cs in Mantis 7240 required for 64-bit word size.

Eliot has provided a number of additional fixes that go beyond these patches and may supercede them. These should also be uploaded here.

lewis 03-08-09 17:09 Uploaded IntegerArrayTestCase-dtl-M6987.3.cs and deleted the earlier IntegerArrayTestCase-dtl.3.cs version. The test case addresses 32 bit integer functions for IntegerArray, but does not cover 64 bit int arithmetic. It also covers a issue in the prim fallback code, see Mantis 7309.

Uploaded Int32Fixes-dtl-M6987.1.cs which updates #signed32BitValueOf: based on Andreas' fix plus extra range checks to fail prim on invalid values, and adds type casts to #primitiveIntegerAt, required for 64 bit image.

I do not currently have any tests to cover the 64 bit int cases.

Disregard my earlier reference to Mantis 7240. That bug report was incorrect, and I included the necessary type cast in this update for #primitiveIntegerAt.

With Int32Fixes-dtl-M6987.1.cs and IntegerArrayFallbackFix-dtl-M7309.3.cs both applied, the tests in IntegerArrayTestCase-dtl-M6987.3.cs are all green for both 32-bit and 64-bit images (on a 64 bit host).

lewis 03-10-09 02:40 Deleted SignedIntFixesPatch-dtl.4.cs (obsolete).
Added Int64Fixes-dtl-M6987.1.cs.
Added IntegerArrayTestCase-dtl-M6987.6.cs, replacing IntegerArrayTestCase-dtl-M6987.3.cs.
lewis 03-10-09 02:49 Summary:

Int32Fixes-dtl-M6987.1.cs - Fixes for 32-bit integer operations.

Int64Fixes-dtl-M6987.1.cs - Fixes for 64-bit integer operations.

IntegerArrayFallbackFix-dtl-M7309.3.cs - Fix for primitive fallback code in IntegerArray.

IntegerArrayTestCase-dtl-M6987.6.cs - Test case and supporting test primitives. Adds two primitives and modifies the #initializePrimitiveTable (use in a test image and discard).
lewis 03-10-09 22:15 I replaced Int64Fixes-dtl-M6987.1.cs with Int64Fixes-dtl-M6987.2.cs, which is a cleaner fix for #signed64BitIntegerFor:.

The only problem with the original method from Andreas was that #magnitude had to be declared as unsigned in order for the "magnitude <= 16r7FFFFFFF" comparison to work properly when magnitude is 16r8000000000000000.
lewis 03-13-09 02:19 Int64Fixes-dtl-M6987.2.cs and Int32Fixes-dtl-M6987.1.cs are now included in VMMaker-dtl.117 in SqueakSource VMMaker.
lewis 04-03-09 02:42 One additional followup item: The FFITestCase.st tests identify an additional issue pertaining to short ints. This is an issue with #primitiveFFIIntegerAt, or more properly it is an issue with the memory access macro shortUnsignedAtPointer(). I have attached FFI-primitiveFFIIntegerAt-dtl-M6987-M7237.1.cs which provides a fix. The change set assumes implementation of the 64-bit FFI fixes in Mantis 7237, so this is best left as a separate follow up issue to the 64-bit FFI update.
lewis 04-12-09 16:56 Uploaded Interpreter-signed32BitIntegerFor-dtl-M6987, which is included in VMMaker-dtl.120 in SqueakSource VMMaker.

This is a fix for #signed32BitIntegerFor: on 64-bit images. It adds a declaration for the method parameter as type int, such that the passed value is coerced from (possibly 64 bit) sqInt to int. This provides the correct behavior when used on a 64 bit image.

This change set should be applied in addition to the changes in Int32Fixes-dtl-M6987.

If the 64-bit FFI changes for M7237 are also applied, then the FFITestCase tests in M6987 are all green for 64-bit host and 64-bit image.
lewis 07-27-11 12:56 An additional issue identified by Eliot Miranda is discussed here:
<http://lists.squeakfoundation.org/pipermail/vm-dev/2011-July/008905.html> [^]

Summary: For signed int arithmetic, overflow produces undefined results (this to enable C compiler optimizations). Therefore the expression (0 - 16r8000000000) may not yield the expected result of 16r8000000000 when performed with signed integer arithmetic.

Eliot provides a fix in oscog with explicit test for 16r8000000000 (test that shift left results in zero value). Dave suggests type cast to unsigned int to defeat compiler optimizations (but this needs to be tested with a problematic C compiler to verify that it works).

Trunk VMMaker currently has this issue for #signed32BitValueOf: and #signed64BitValueOf:
7650 System minor always 06-16-11 14:18 07-20-11 06:08 Lars normal new none none 4.2 open 0 calling storeString on a compiledMethod freezes the image I printed 'Object methodDict values first storeString' in a Workspace.
leves 06-18-11 22:35 #storeString runs into infinite recursion if the object graph to be serialized has a loop. Object methodDict values first is #checkHaltCountExpired (in my image) which references Smalltalk. Smalltalk is a global variable, it's value is a SmalltalkImage. The SmalltalkImage's globals variable points to a SystemDictionary which contains all global variables, including Smalltalk itself.
You could say that ReadOnlyVariableBinding (the class whose instances are used by CompiledMethods to point to globals in literals) could have a better #storeString implementation, but this is not enough to avoid loops in the object graph. E.g. if you evaluate the following method at least once, then #storeString will run into infinite recursion no matter what you do:

Object >> recursiveObjectGraph

    | foo |
    foo := #(nil).
    (foo at: 1) ifNil: [ foo at: 1 put: foo ].

The real solution is to use an object serializer instead of #storeString if you want to serialize a CompiledMethod, or just use the source code if you don't care about state stored by the methods. There are several "old" serializers, like SmartRefStream, ImageSegments or SIXX and we also have new tools, like Fuel (http://squeaksource.com/Fuel/ [^] ) and StOMP (http://squeaksource.com/STOMP/ [^] ).
wiz 06-22-11 06:15 StoreString should be implemented to at minimum throw an error for classes that would otherwise send it into an infinite loop. Or just return a string saying x is not storable.

Better would be to sort things out so it works in most cases.

Above all someone needs to document what storeString can be expected to do and not do.

What I expect to get when I ask for a store rather than a print string is a re-compilable object no more complicated than the initializing selector sent to the class . E. G. If I type '[] storeString' I would expect '[]' in response.

For a compiled method maybe I would just want a [ :var1 :var2 | <current method source> ] version of the method for starters.


Yours in curiosity and service, --Jerome Peace
leves 07-18-11 21:34 The rule is simple: #storeString works iff the receiver's graph is a tree. If it's a DAG and not a tree, then the image won't freeze, but evaluating the resulting code will yield a different object graph (with a tree structure). If the object graph has a loop, then #storeString will get into infinite recursion.
The only way to avoid the last two cases is to mark the visited objects and reference them instead of serializing them onto the stream again (like #veryDeepCopy does). It would also be a two pass algorithm.
Also note that storeString won't work for large graphs, because the VM has some limitations for executed code (number of temporaries, literals, bytecodes, etc).
So I think #storeString shouldn't be used without a priori knowledge about the object graph.
wiz 07-20-11 06:08 leves
Thank you for your insight.

This still begs the question however. Plus objects are avoiding a responsibility.
First, each object should know if it can reliably respond to #storeString: and if not give an error message. Allowing a default method going into an infinite loop breaks protocol. The user should not have to know how each object will respond before sending the message. That breaks encapsulation.

Second each object that can print itself should have a way of storeStringing itself. The object class should discern the difference between state variables and cache variables. There is no need to store cache variables. In the case of Morphs they could usefully store themselves with out their owners if they would take responsibility for adding their sub morphs.

There are time and commitment constraints in finding programmers who will take responsibility for writing the proper code. So the resources might not be there to solve the problem completely. So the first step should happen first then the second step as resources permit.

The current practice of blindly saving all ivars by index has got to be abandoned IMO.

The other part of this is I really want a storeString that works for most objects. Squeak needs a way of writing itself out.

Good low hanging fruit would be to get a test that indicates if an object can be trusted to respond storeString w/o an infinite loop.
7642 Tools minor always 06-05-11 13:19 07-18-11 21:23 FrankShearar FrankShearar normal assigned none none trunk open 0 MNUs on Windows "right click" when another debugger open I've run twice today into a situation where, after having failing tests in the TestRunner, "right click"ing the desktop results in a MessageNotUnderstood: MethodReference>>do:.

The "aCollection" being passed around is actually a MethodReference: MessageTrace >> browseAllImplementorsOf:.

If you open a Trunk (11458), run the ToolsTest suite, you'll see two failing tests. Click the top failing test, and the debugger pops up. Now yellow-click (?) the desktop, and you'll see the error.

Close the failing-test-debugger, and the problem disappears!

FrankShearar 06-05-11 13:43 The offender is a MessageTrace, which has a LazyListMorph containing MethodReferences.

I don't know where the MessageTrace comes from, but that LazyListMorph's getting its contents from the MessageTrace's messageList, which intentionally contains MethodReferences.

Possibly, MessageTrace's buildMessageListWith: should reference a new method #messageListAsStrings:

    ^ self messageList collect: #printString
leves 06-10-11 13:32 If PluggableListMorph and/or LazyListMorph should be able to hold non-string objects in their lists, then the #userString method should be fixed, otherwise we should ensure that only strings are added to the lists as you suggested.
In Morphic-cmm.523 Chris wanted to "allow LazyListMorphs to be populated with first-class Objects rather than just Strings", but the solution seems to be incomplete. I'm not sure PluggableListMorph can be easily updated the same way.

http://forum.world.st/The-Trunk-Morphic-cmm-523-mcz-td3337021.html [^]
leves 07-18-11 21:23 Bert modified PluggableListMorph >> #userString to send #asStringOrText to the list items. Since only Text responds to #asStringOrText differently than #asString, and writing a Text to a stream is no different than writing a string to a stream, therefore I think it's safe to use #asString instead of #asStringOrText.
Btw, PluggableListMorph (and subclasses) along with LazyListMorph is a bit messy and should be cleaned/refactored.

Anyway, this issue is solved.
7648 Tools minor always 06-14-11 11:04 07-08-11 17:45 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Browser: MNU unselecting a class after viewing method * Select a method in a Browser.
* Select _the_selected_ class (unselecting the class).

MNU: UndefinedObject(Object)>>compiledMethodAt:ifAbsent: in Browser >> selectedMessage because editSelect == #editMessage when we refresh the contents.
FrankShearar 06-27-11 11:59 Submission uploaded to http://source.squeak.org/inbox/Tools-fbs.364.mcz [^]
leves 07-08-11 17:45 Integrated.
7472 VM minor always 03-07-10 00:29 06-17-11 23:54 wiz low confirmed none none trunk open 0 In sq 9563 copying workspace text across images loses line endings For this one.

Open two fresh sq 9563 images.

In one open a workspace
type the digits 1 to 9 each on a separate line


select the entire work space and copy the text.

Open a second workspace in the same image and paste the text
(you will see what you typed)

Now go to the second image and
Open a workspace and paste the text.
(notice that all nine digits are now on the same line.)

What happened to the line endings?

I am doing this inter image pasting in the context of Ubuntu 8.04.

Will this bug reproduce on a Mac or Windows system?
laza 03-10-10 09:33 I can't reproduce this. Neither on Ubuntu 9.10 nor on Windows. What VM were you using? Does the problem still exist for you?
wiz 03-12-10 09:01 Hi laza,
Interesting data point. Which vm are you using?

I have a early pharo closure vm in service. Not quite sure which one.

What should I be using?

Cheers --Jer
laza 03-12-10 13:24 Let's see

3.10-6 #1 So 23. Aug 13:22:14 CEST 2009 gcc 4.3.4
Squeak3.10beta of 22 July 2007 [latest update: 0007159]
Linux renaud 2.6.30-1-686 #1 SMP Mon Aug 3 16:18:30 UTC 2009 i686 GNU/Linux
default plugin location: /usr/lib/squeak/3.10-6/*.so

This should be the last VM with closure support before the build system switched using cmake

You could also try the latest VM from http://www.squeakvm.org/unix [^]
KenCausey 03-16-10 19:52 wiz? More info? Can you still reproduce this? Can I close now?
wiz 03-17-10 07:07 Hi Ken, please don't close yet. I haven't tried with the suggested vm and I want to do that.
With the pharo vm the symptoms are quite solid for me.

Cheers -Jer.
chris 03-23-10 20:03 I am having the same problem, Kubuntu 9.1.
chris 03-23-10 20:30 $ squeak -version
+ exec padsp /opt/4dst/thirdparty/squeak/lib/squeak/3.11.3-2135/squeakvm -pathenc UTF-8 -encoding UTF-8 -plugins /opt/4dst/thirdparty/squeak/lib/squeak/3.11.3-2135 -vm-sound-oss -version
3.11.3-2135 #1 XShm Wed Sep 16 14:25:10 PDT 2009 gcc 4.3.3
Linux ubuntu 2.6.28-15-generic 0000049-Ubuntu SMP Tue Aug 18 18:40:08 UTC 2009 i686 GNU/Linux
plugin path: /opt/4dst/thirdparty/squeak/lib/squeak/3.11.3-2135 [default: /opt/4dst/thirdparty/squeak/lib/squeak/3.11.3-2135/]

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 9.04
Release: 9.04
Codename: jaunty

$ uname -a
Linux chrisT60p 2.6.28-11-generic 0000042-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux
laza 03-24-10 10:06 Hm, I try to figure out what changed, but I'm seeing that now too! :{
wiz 04-08-10 19:15 more data points.

In a sq 7067 (3.9)
Open a workspace
Type digits on separate lines.

Open a fresh sq 9885 (4.1rc)
paste note that pasting works correctly.

In a fresh workspace in sq 9885
type digits on separate lines

Back in sq sq 7067
Open a fresh workspace.
Note that you get digits on separate lines. Good.

Launch a new sq 9885
Open a fresh workspace.
Note you get digits on same line.
So suspects:

Linux has an alibi.

New workspace (shout) needs to be grilled.

There seems to be something that makes the workspace decide to change line endings. It does not happen in all cases (else the plain workspace paste would foul up also). It also doesn't happen within the same image. It does happen after an excursion between images.

Yours in curiosity and service, --Jerome Peace

P.S I tried coping text into the text editor.
Noted digits all on separate lines.
The problem seems to happen in the paste to workspace phase.

wiz 04-08-10 19:24 q:Is this a show stopper?

a: Probably.

Copy and paste is pretty essential.

I have found one apparent work around.

You can copy from workspace to into a text editor w/o using line endings.

Then you have to copy the text in the text editor and use that to paste into your second image.

I suppose this also means you could save the workspace to disk. Open that file and copy and paste into a second image.

All this is a big hassle for something that used to work and is just supposed to work.

If 4.1 is released with this bug then it at least has to be mentioned as a known issue.

Cheers --Jer
casey 04-09-10 21:43 I have repro. Let me know if there's something I can do to help track this one down.

casey@wanderlust:~$ squeak -version
3.10-6 #1 Sun Aug 2 02:02:29 PDT 2009 gcc 4.2.4
Squeak3.10beta of 22 July 2007 [latest update: 0007159]
Linux ubuntu 2.6.24-24-generic #1 SMP Fri Jul 24 22:46:06 UTC 2009 i686 GNU/Linux
default plugin location: /usr/local/lib/squeak/3.10-6/*.so
laza 04-13-10 12:06 This might be the cause of the problem. Can anyone verify that this solves the issue?

from http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-April/148575.html [^]

On Apr 11, 2010, at 5:43 PM, Jerome Peace wrote:

> First across images cutting and pasting loses line endings.

Fix your locale settings in your .profile or .bashrc or whatever you
use. Adding

export LC_ALL=C


export LC_ALL=en.US_UTF-8


export LC_ALL=$LANG

will probably fix it. Open a new shell and try again.
wiz 04-14-10 01:38 Hi laza.

I am currently trying variations of Ian's suggestions. The problem is I can't figure out which one specifically is relevant to the Ubuntu 8.04 enviornment.
Also, I need to know what would be a significant test. I have written Ian offlist and I am waiting for a reply.

Meanwhile the problem has proved harder than the variations I was able to try. The problem still exists. It is still extremely annoying and limiting. And it needs to be resolved.

The 3.9 image provides copiable text without the problem. So without changing anything in the Ubuntu enviornment there should be something in squeak that has change/could be reverted that holds the solution.

Yours in curiosity and service, --Jerome Peace
wiz 04-14-10 07:41 More data points.

Using sq 4.1.1. (sq 9938) and the vm from

copy the first paragraph and a half from the "Welcome..." window.

Opening a 3.9 squeak (old vm) I can paste that getting correct line endings\

Opening a second 4.1.1 image I paste the same thing and have lost the line endings.

If I explore the Clipboard default in the 3.9 squeak I see the pasted text.

If I explore the Clipborad default in 4.1.1 I do not see the pasted text but apparently some text leftover from the save.

If I explore the Clipboard default in the source 4.1.1 image I see the copied text with the correct line endings.

To get the pasted text in the destination 4.1.1 I have to explore the result of

Clipboard default primitiveClipboardText

Which calls <primitive 141> successfully. The text comes back from the primitive w/o the line endings.

So what is primitive 141 doing that gets me no line endings?

More. What is the 4.1.1 primitive doing that the 3.9 primitive is not?

Finally, having retreived the system clipboard text from the primitive why is it not stored into the Clipboard default? Come to think of it when are things stored into the Clipboard default?

Yours in curiosity and service, --Jerome Peace
wiz 06-17-11 23:54 Time to freshen this report.

Problem still happens in Sq4.3.

Ubuntu 8.04

I can copy text from a Squeak 4.1 image workspace or codeholder.

If I paste it into the linux Text Editor the lines are separate. If instead
I paste it into a workspace or codeholder in sq4.2 (10976) the line endings seem to be lost.

If I instead copy what I just pasted in the Text Editor and paste that into the workspace or code holder the line endings are preserved.

Q: How do I find out what the difference is between the paste buffer in the first paragraph and the paste buffer in the second?
7649 VM feature always 06-14-11 19:57 06-14-11 19:57 lewis lewis normal assigned none none open 0 Methods for intercepting class access ([Vm-dev] Minor change for understanding) Contributed by Jean Baptiste Arnaud on vm-dev list
<http://lists.squeakfoundation.org/pipermail/vm-dev/2011-June/008420.html> [^]

[Vm-dev] Minor change for understanding
Jean Baptiste Arnaud jbaptiste.arnaud at gmail.com
Thu Jun 9 13:38:42 UTC 2011

I submit a really small change for make some code more easy to intercept class access in VM.
I do crappy think with class pointer and i would like to indirect the access to the class.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: VM change.1.cs
Type: application/octet-stream
Size: 6028 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110609/dfac70bb/VMchange.1.obj [^]
-------------- next part --------------

I just create a method change reference of 4 new one. I have the feeling that make the structure more understandable.
with this change i was able to intercept all class access on my experimental VM by changing 3 method.
I run tiny benchmark for see if the change add overhead on class access. I don't find any overhead.
Jean Baptiste Arnaud
jbaptiste.arnaud at gmail.com
See attachments to email on vm-dev
<http://lists.squeakfoundation.org/pipermail/vm-dev/2011-June/008420.html> [^]
7647 Kernel minor N/A 06-13-11 05:08 06-13-11 05:08 wiz normal new none none open 0 [RFE] A method #times to convert an integer into an interval from one to the integer. E.G. 3 times collect: [etc.] Squeak is a great rapid prototyping tool.

Integers know timesRepeat: [no argument valuable block].

But there is no equivalent for timesCollect: etc.

I have been using the simple method:

"Return an interval from 1 to the receiver"
^ 1 to: self

to make life easy.

There is a great convenience in having a no argument method to create an interval.

In prototyping small intervals can be tried and then as things start working larger test can be made just by increasing the integer used as the receiver.

Squeak should be easy. Programmers should be lazy.

Yours in curiosity, service and lazyiness --Jerome Peace
7631 System minor always 05-05-11 11:52 06-10-11 21:38 FrankShearar leves normal resolved none none trunk fixed 0 Duplicate Preference: "Allow underscore assignments" and "allowUnderscoreAssignment" As above.
leves 05-15-11 23:25 That's because the old (non-pragma) preference is still in the image. I'm not sure it's worth supporting it in the future, because it doesn't work since Squeak 4.1, but nobody complained so far.
leves 06-10-11 21:38 Fixed in Compiler-ul.209 and System-ul.440. The old preference was removed.
7557 Documentation feature always 08-27-10 06:10 06-08-11 13:30 casey casey normal assigned none none open 0 Need better FFI documentation One of the major objections I hear from developers to Squeak, and Smalltalk in general, is that it's hard to interface with things not written in Smalltalk, specifically things with C calling conventions.

I suspect that this may be hogwash. I think the main problem is weak documentation in this area. I suspect the real technical difficulties (the Squeak VM itself being ultimately represented in C) lie in the use of direct pointers and clever garbage collection. There's also the fact that calls block the VM, but I believe there may be solutions to that problem as well. But I don't really know, and I think far too few people understand this stuff very well.

I think a lot of folks probably look at FFI, get lost, google a bit, and then give up.

We should explore and document this stuff at some point.
casey 08-27-10 06:40 Known documentation:

http://wiki.squeak.org/squeak/1414 [^]
http://wiki.squeak.org/squeak/2424 [^]
http://wiki.squeak.org/squeak/2426 [^]
http://wiki.squeak.org/squeak/2425 [^]
http://wiki.squeak.org/squeak/3735 [^]
http://wiki.squeak.org/squeak/5846 [^]
http://wiki.squeak.org/squeak/5849 [^]
seandenigris 09-06-10 20:49 I had started to compile info from the web. The rough summary of what I found (pasted from http://forum.world.st/FFI-Documentation-td2225150.html#a2225150) [^] is:

What is FFI and what is it used for? Calling functions in libraries outside of the image...

FFI, the Squeak Foreign Function Interface, is used to call functions located in shared libraries that are not part of the Squeak VM nor its plugins. It also provides means to read and write memory structures that are associated with the use of those shared libraries. A typical use is to directly invoke operating system APIs. As such, applications that use FFI can only be used on the platform(s) that support the particular API being used. C conventions are used throughout, though the external function could have been written by any language capable of generating object code that follows C conventions. FFI is probably the easiest way to do the things it does. FFI is pretty fast too. Croquet uses FFI calls to OpenGL for all it's drawing routines.[1]

How does FFI work?
Technically what happens is:
* you define what the interface is - the parameters, types etc.
* when you make the call, the FFI logic assembles the data from the Squeak Objects into the proper structures according to the routine calling conventions for your architecture, and of course manages the return values. So no magic but perhaps just a little assembler in the plugin to properly deal with all the registers and condition flags.

How do I use it?

1. make a method (whose structure is similar to a named primitive method)

system: aString "name (by convention is apiXxx: e.g. apiSystem:)"

        <apicall: long 'system' (char*) module: 'libSystem.dylib'> "first line should be the external function specification"
        ^self externalCallFailed.

Let's take it piece by piece:

        system: aString
                Method name - by convention named 'apiXxx'
        <apicall: long 'system' (char*) module: 'libSystem.dylib'>
                Function specification
                        - should be the first line
                        - enclosed in angle brackets: < > containing:
                                1. Calling Convention, either apicall: (Pascal convention) or cdecl: (C convention)
                                        - Mac - use either one
                                        - Unix - use cdecl
                                        - Windows - use apical
                                2. Return Type (see types)
                                3. External Function Name (literal string)
                                4. Argument Types (a literal array)
                                5. Module - "module: " + [filename of the external library (literal string)] (see below).

        self externalCallFailed.
                Failure handler
                        - normal smalltalk code
                        - executed if the linking to or calling the external function fails
                        - API calls don't know how to communicate failure like Squeak primitives do, so:
                                - it does not tell you whether the external function succeeded
                                - the most common code is simply '^self externalCallFailed.'

Argument Types
        - must be names of ExternalTypes, either:
                - atomic types (see ExternalType class>>initializeFFIConstants and ExternalType class>>initializeAtomicTypes):
                        byte (unsigned)
                        sbyte (signed)
                        ushort (16-bit unsigned)
                        short (16-bit signed)
                        ulong (32-bit unsigned)
                        long (32-bit signed)
                        ulonglong (64-bit unsigned)
                        longlong (64-bit signed)
                        char (unsigned)
                        schar (signed)
                        float (single-precision float)
                        double (double-precision float)

Structure Types [4]
        - subclass of ExternalStructure
                - class>>fields that returns an array of field descriptions (see below)
                        - Example:
                                        ^#((red 'byte')(green 'byte')(blue 'byte'))
                - class>>initialize which includes "self defineFields" (which must be called before using the class)
        - refer to as MyExternalStructure* (to indicate that the argument or return is a pointer to that structure)

Field description [4]
        - 2-element array (or three but that does something else, I'm not sure what):
                - first element is the field name
                - second is the type

Mac Memory Allocation Issues [4] (not sure about this)

If you allocate external structures, those with memory outside the Squeak process space, you may need to increase the amount of memory that is reserved outside the object heap for such use. The Mac OS (9 and previous) needs this, other platforms may be able to dynamically get more memory from the OS. To see how much memory is currently reserved printIt 'Smalltalk extraVMMemory'. To change it, execute 'Smalltalk extraVMMemory: someNumberofBytes' Then save your image and quit. When you next start up, the amount of memory you requested will be reserved. (JMM) Note the OSX versions of the VM ignore extraVMMemory because the memory model for OS-X/unix applications is quite different.

Module Name
- depends on the platform
        - Mac
                - pre Snow Leopard: flexible, can eliminate leading lib or extension e.g. 'libc.dylib' becomes 'libc', 'c.dylib', or 'c'
                - Snow Leopard
                        - file name must be exact including extension (unless Info.plist is altered as in 'Library Location' below)
                - With pre-mach-o VMs
                        - For Classic applications, use 'InterfaceLib'
                        - For Carbon libs, use 'CarbonLib'

Module Location - where the external library file lives
        - depends on the platform
                - Mac
                        - pre Snow Leopard
                                - checks VM path and common library paths
                        - Snow Leopard
                                - only looks in VM bundle's Resources file, you must either [5]:
                                        - store all external libraries there
                                        - ln -s path/to/library path/to/VM/Resources/library_name
                                        - Change the VM's Info.plist "SqueakPluginsBuiltInOrLocalOnly" key from "true" to "false."
        - security
                - malicious users could call arbitrary functions in the OS e.g. "format c:" from "system.dll" [7]
                - VMs do not protect against buffer overflow from bad parameters [8]:
                        "this would require an attacker to execute arbitrary Smalltalk
                        code on your server. Of course if they can do that they own you
                        anyway, especially if you allow FFi or use the OSProcess plugin" - John McIntosh

* difficulty
        - if you make a mistake you'll not drop into the debugger but Squeak will just crash [2]
        - If you crash Squeak when it is running the garbage collector, then you know your FFI code is leaking bits into object memory [2]

What do I need to use FFI with Squeak?

You need the FFI plugin, which is included with most VM's as of Squeak 3.6 or so.

You can also build the plugin yourself. See VMMaker.

[1] http://wiki.squeak.org/squeak/1414 [^]
[2] http://wiki.squeak.org/squeak/2424 [^]
[3] http://wiki.squeak.org/squeak/5716 [^]
[4] http://wiki.squeak.org/squeak/2426 [^]
[5] http://forum.world.st/squeak-dev-Alien-Squeak-FFI-issues-on-Snow-Leopard-td85608.html [^]
[6] http://wiki.squeak.org/squeak/5846 [^]
[7] http://forum.world.st/FFI-Callbacks-td54056.html#a54073 [^]
[8] http://forum.world.st/Security-td99624.html#a99635: [^]

Other choices:
In the fall of 2008, Alien the FFI interface (written by Cadence Design Systems, Inc.) was put into squeaksource: http://www.squeaksource.com/Alien.html. [^] This API allows the primitive to call back to Smalltalk Code, and return error code information, and apparently is much faster due to a less complex call sequence.
        * if you need callbacks
        * mac-only?

Plugins - write external code and dynamically link it to the VM
                * safest - users are limited to using the functionality you provide and can not call other external functions e.g. system rm /
                * fast - faster than FFI
                * you can create new functionality that doesn't exist in any library
                * harder to write
                * plugin must be distributed with the Smalltalk code - there can be complications with platforms

Primitive method - invokes behavior in the VM or a plugin [3]

* why would you want to build the FFI plugin yourself?
* api prefix or no for method names?
* not sure about pre Snow Leopard library search
* OSProcess - how does this fit into the bigger picture?
* "^self externalCallFailed." or "self externalCallFailed." i.e. return self or return the result, or doesn't matter?
* why would a field description have three elements?
* Mac Memory Allocation Issues?
7643 Browser minor always 06-08-11 09:08 06-08-11 09:08 sittiri normal new none none trunk open 0 Browser should keep the selection after alphabetizing categories As above.
7640 Kernel minor N/A 05-31-11 14:23 05-31-11 14:32 wiz normal new none none trunk open 0 A mother for storeString bugs For many objects storeString behaves badly.

This is a parent for other storeString bug reports.

These storeString bugs have been in squeak for a long time. The implementation seems to just store out the ivars as an array which limits and constrains the interpretation because any reshaping of a class can destroy the relation of the ivar index to its meaning.

The user story I am wanting to fulfill is I should be able to send an object a message that has it print out how to create a quasi-copy of it that can then be evaluated.

I don't know if storeString is meant to fulfill that story or another one. But the way it currently opperates it is not safe to send to a general object.
7641 Morphic minor always 05-31-11 14:31 05-31-11 14:31 wiz normal new none none trunk open 0 storeString sent to a visible Morph goes into an infinite loop.
in a work space evaluate:

Morph new openInWorld storeString.
The loop comes because storeString follows the parent ivar as well as all the submorphs.

What I am after is there should be some way to tell a morph to print a string that allows the creation of a quasi-copy of itself.

This means each object needs to think about what ivars are state and which ivars are simply cache.

Also rather than infinite loops storeString should raise an error right off the bat for morphs it can not handle. Or it should raise a deprecation warning but that leaves its function in limbo.

7639 Kernel block always 05-31-11 14:12 05-31-11 14:12 wiz urgent new none none trunk open 0 [BUG] [] storeString goes into a tight infinite loop. For this one in a fresh disposable image,

in a work space evaluate:

[] storeString

on a cog vm it will go into a tight infinite loop.
requiring the job to be killed.

In 3.9 the same infinte behavior but the loop was user interuptable.

As I understand it storeString is supposed to be like but more precise that printString allowing its output to be re-evaluated. Ideally the reevaluation would give you an object similar to the receiver.

For simple block closures the decompile message will produce a text that has this property.

Eliot informs me this only work as long as the closure doesn't close over anything.

The critical part of this bug is where the machine freezes if a closure is sent

This can trivially be fixed by causing storeString to fail with an error. Is that what should be done?

Yours in curiosity and service, --Jerome Peace
7638 Morphic minor always 05-27-11 00:45 05-27-11 00:45 garydunnhi normal new none none 4.2 open 0 Morphic book bookmarks not saved in project Bookmarks are missing when project containing book is loaded into a new image. If bookmarks were in a column morph, the message "a SimpleButtonMorph(nnn) that was not counted" appears in their place. If bookmarks were on a page they simply disappear.

A bookmark is a kind of SimpleButtonMorph. The class includes methods for veryDeepInner: and veryDeepFixupWith:. These are probably used when creating the project file. See class comment for DeepCopier. Suspect the error is in one of these methods.
7602 Multilingual major always 01-29-11 23:30 05-22-11 20:35 unoduetre leves normal resolved none none 4.1 fixed 0 CR and LF Please run the following code:
file:=FileStream fileNamed: 'test.txt'.
file lineEndConvention: #lf.
file nextPut: Character cr.
file nextPutAll:'
' asWideString.
file lineEndConvention: #cr.
file nextPut: Character cr.
file nextPutAll:'
' asWideString
I've tested it on Linux (#lf convention), but it might work on other systems (that's why I've included the last four lines). The file 'test.txt' after doing these lines is: nl cr cr cr, and of course it should be nl nl cr cr.
leves 01-30-11 04:07 This bug was introduced in 4.1 by the speedup of TextConverters (latin1Map and friends). The only solution I can imagine is to move all line end conversion related code to the TextConverters (at least for writing). This may also give us a small performance boost.
unoduetre 01-30-11 12:58 I suppose whole MultiByteFileStream should get some refactoring. In a week I have more time to do something with it. Now I've simply applied some dirty patch.
leves 05-22-11 20:35 Fixed by Multilingual-ul.144...151 and Files-ul.110.
7637 Tools minor always 05-22-11 10:22 05-22-11 10:22 FrankShearar normal new none none trunk open 0 Debugger doesn't let you inspect undeclared variables (in a do-it) In the below snippet, you cannot inspect counter during a do-it. counter := Dictionary new.
CompiledMethod allInstances do:
    [:each | | bag tempCount |
    tempCount := each numTemps.
    bag := counter at: tempCount ifAbsent: [counter at: tempCount put: Bag new].
    bag add: each]
7636 VM minor always 05-21-11 22:32 05-21-11 22:32 lewis lewis normal assigned none none open 0 Trouble calling a Mac Foundation function via FFI Reported on vm-dev <http://lists.squeakfoundation.org/pipermail/vm-dev/2011-May/008167.html> [^]

I'm having trouble calling a Mac Foundation function via FFI. It appears to
be the plugin for the Mac 4.2.5 VM. There was a discussion at http://forum.world.st/FFI-to-call-Mac-Carbon-functions-td3507842.html [^]

The meat of it is:
        After I put a link to the Foundation lib in the VM's Resources
folder, I compiled:

        CarbonFunctions class>>NSMakeRectWithX: xFloat y: yFloat w:
widthFloat h: hFloat
                <apicall: void* 'NSMakeRect' (float float float float) module: 'Foundation'>
                ^self externalCallFailed

                NSMakeRectWithX: 0.0
                y: 0.0
                w: 100.0
                h: 100.0.

        Error: Unable to find function address

Other relevant info:
* I am able to call libc functions

Previous discussion thread: <http://forum.world.st/FFI-to-call-Mac-Carbon-functions-td3507842.html> [^]
7624 Nebraska minor always 04-25-11 21:05 05-17-11 18:08 garydunnhi normal new none none 4.2 open 0 On FreeBSD, dragging out a badge does not fill in IP address On OS X and Windows VMs pulling out a badge fills in the local IP address. On FreeBSD the IP address remains
garydunnhi 05-17-11 18:08 In FreeBSD, NetNameResolver localHostName. returns ''

Same for localHostAddress. That method calls primLocalAddress:

    "Return the local address of this host."

    <primitive: 'primitiveResolverLocalAddress' module: 'SocketPlugin'>
    self primitiveFailed

So I guess the problem is in the VM.
7610 VM crash always 03-06-11 23:30 05-17-11 00:24 lewis lewis normal resolved none none fixed 0 Serial plugin crash on unix if too if too man opens are performed Reported by Markus Lampert with fix provided:
http://lists.squeakfoundation.org/pipermail/vm-dev/2011-March/006970.html [^]

The serial plugin for unix ( can take the vm down. The following code demonstrates the issue:

s := SerialPort new.
40 timesRepeat: [
    s openPort: '/dev/ttyS0'.
    s close]
Fix provided by Markus Lampert (attached)

"I have attached a version of sqUnixSerial.c which fixes the problem. It allows
for 32 _different_ serial ports to be opened and closed (as often as necessary).

It also prevents the segmentation fault. If more than 32 different serial ports
are attempted to be opened the request fails.

The changes are in line 202, and 220 - 352.

In the current implementation (trunk) it is not possible to find out if
#openPort: was successful or not and I don't know how to fix that."
sqUnixSerial.c (13 KB) 01-01-70 00:33
lewis 05-17-11 00:24 Fixed in SVN 2364 (trunk platforms/unix/plugins/SerialPlugin/sqUnixSerial.c updated March 2011)
7632 Collections minor always 05-06-11 07:46 05-16-11 00:57 wiz lewis normal resolved none none fixed 0 String Holder class>>openLabel: returns the Class rather than the instance. in a workspace compare the results of evaluating:

(Workspace openLabel: 'My Work') explore .


(Workspace new openLabel: 'My Work' ) explore .

StringHolder class>> openLabel: aString

    self new openLabel: aString

tk 1998

should probably be:

StringHolder class>> openLabel: aString
"Open a string holder. Return the instance."
    ^self new openLabel: aString

I am not ambitious enough to push this into a change set let alone the inbox but would the next person touching this package please add the change?

Yours in curiosity and service, --Jerome Peace
FrankShearar 05-06-11 08:29 If you submitted this to Inbox I'd vote +1 for its inclusion.
lewis 05-16-11 00:57 Fixed in trunk Kernel-dtl.588
7622 Morphic minor always 04-19-11 17:15 05-15-11 22:35 garydunnhi normal new none none 4.2 open 0 Book morph save as new-page prototype fails setNewPagePrototype
    "Record the current page as the prototype to be copied when inserting new pages."

    currentPage ifNotNil:
        [newPagePrototype := currentPage veryDeepCopy].

veryDeepCopyWith: deepCopier
    "Copy me and the entire tree of objects I point to. An object in the tree twice is copied once, and both references point to him. deepCopier holds a dictionary of objects we have seen. Some classes refuse to be copied. Some classes are picky about which fields get deep copied."
    | class index sub subAss new uc sup has mine |
    deepCopier references at: self ifPresent: [:newer | ^ newer]. "already did him"
    class := self class.
    class isMeta ifTrue: [^ self]. "a class"
    new := self clone.
    (class isSystemDefined not and: [deepCopier newUniClasses "allowed"]) ifTrue: [
        uc := deepCopier uniClasses at: class ifAbsent: [nil].
        uc ifNil: [
            deepCopier uniClasses at: class put: (uc := self copyUniClassWith: deepCopier).


            deepCopier references at: class put: uc]. "remember"
        new := uc new.
        new copyFrom: self]. "copy inst vars in case any are weak"
    deepCopier references at: self put: new. "remember"
    (class isVariable and: [class isPointers]) ifTrue:
        [index := self basicSize.
        [index > 0] whileTrue:
            [sub := self basicAt: index.
            (subAss := deepCopier references associationAt: sub ifAbsent: [nil])
                ifNil: [new basicAt: index put: (sub veryDeepCopyWith: deepCopier)]
                ifNotNil: [new basicAt: index put: subAss value].
            index := index - 1]].
    "Ask each superclass if it wants to share (weak copy) any inst vars"
    new veryDeepInner: deepCopier. "does super a lot"

    "other superclasses want all inst vars deep copied"
    sup := class. index := class instSize.
    [has := sup compiledMethodAt: #veryDeepInner: ifAbsent: [nil].
    has := has ifNil: [class isSystemDefined not "is a uniClass"] ifNotNil: [true].
    mine := sup instVarNames.
    has ifTrue: [index := index - mine size] "skip inst vars"
        ifFalse: [1 to: mine size do: [:xx |
                sub := self instVarAt: index.
                (subAss := deepCopier references associationAt: sub ifAbsent: [nil])
                        "use association, not value, so nil is an exceptional value"
                    ifNil: [new instVarAt: index put:
                                (sub veryDeepCopyWith: deepCopier)]
                    ifNotNil: [new instVarAt: index put: subAss value].
                index := index - 1]].
    (sup := sup superclass) == nil] whileFalse.
    new rehash. "force Sets and Dictionaries to rehash"
    ^ new
garydunnhi 05-15-11 22:35 Please close. This was caused by failure to create master page correctly. A nicer error messege would be appreciated.
7634 Tools minor always 05-06-11 10:41 05-06-11 21:37 FrankShearar FrankShearar normal resolved none none trunk fixed 0 Cannot revert a class comment Find a class with a class comment. Edit the comment. Click "versions". Revert to an earlier version.

"NonBooleanReceiver: proceed for truth." because instvar meta in ChangeRecord>>methodClass has as its value the class you're currently editing, rather than a boolean!
FrankShearar 05-06-11 11:47 ClassCommentVersionBrowser>>#scanVersionsOf: says this:

  self addItem:
    (ChangeRecord new file: file position: position type: #classComment
      class: class name category: nil meta: class stamp: stamp)

There are two possible solutions: force meta to be "class" or "class class", or change ChangeRecord>>#methodClass to say

  meta ifTrue: [ ^ methodClass class ].
  ^ methodClass.
FrankShearar 05-06-11 20:16 http://source.squeakfoundation.org/inbox/Tools-fbs.350.mcz [^]
FrankShearar 05-06-11 21:37 Nicolas Cellier added to Trunk.
7628 Tools minor always 05-05-11 09:22 05-06-11 21:35 FrankShearar FrankShearar normal resolved none none trunk fixed 0 DependencyBrowser "browse" button doesn't work Open a DB, browse to a particular method of a class of a ... of a package dependency of a package.

Hit "browse". Nothing happens. You should get a Browser opened on that class>>selector.
FrankShearar 05-06-11 11:25 * http://source.squeakfoundation.org/inbox/ToolsTests-fbs.42.mcz [^]
* http://source.squeakfoundation.org/inbox/Tools-fbs.349.mcz [^]
FrankShearar 05-06-11 21:35 Nicolas Cellier added to Trunk.
7633 Monticello minor always 05-06-11 08:01 05-06-11 08:01 FrankShearar avi normal assigned none none trunk open 0 Attempting to check changes against a remote repository fails badly when you have no connection If you try check changes against a remote repository, and you don't have a network connection, you're asked "Retry / Give Up" because the name doesn't resolve.

So far so good.

Then you Give Up, and you get a debugger on primSocketFail: or similar (my machine blue-screened soon after, so I'm just remembering the name).
7630 Monticello minor always 05-05-11 10:33 05-05-11 10:44 FrankShearar avi normal assigned none none trunk open 0 Missing package dependency warning doesn't tell you the name of the to-be-loaded package For instance:

"This package depends on the following classes:" (etc etc)

Which package is that? I don't know!
FrankShearar 05-05-11 10:44 Suggested improvement: put the package name in MCPackageLoader>>#dependencyWarning
7629 SUnit minor always 05-05-11 09:36 05-05-11 09:36 FrankShearar FrankShearar normal assigned none none trunk open 0 Error test repeatedly added to errors list If you have a test that causes an error (like an Exception raised in an unwind), the failing test will be repeatedly added to the errors list.
7025 Browser minor always 04-22-08 16:29 05-03-11 18:17 sig cwp normal assigned none none 3.10 open 0 OB-selection fix In sq3.10-7159dev08.04.1.image OmniBrowser vents to DNU when removing methods from class.
I don't know if it fixed already, here is my simple fix.
OB-selection-fix.1.cs (1 KB) 01-01-70 00:33
7056 Tools minor always 05-18-08 11:23 05-03-11 18:16 macta cwp normal assigned none none 3.10 open 0 Dragging method in OB-System Browser gives walkback I opened a system browser (I think its an Omnibrowser) in Damien's image and started to drag a method from a subclass to a superclass - as I crossed over the categories pane (before I got to the superclass in the 2nd pane) I got a walkback:

Text(Object)>>doesNotUnderstand: #withBlanksTrimmed
    Receiver: a Text for 'WAHtmlRoot'

I am using Damien's 3.10 web image on Windows XP.

I can reproduce it consistently if I drag over the Instance ? Class buttons on my way to the superclass (wiggle over them a bit and you will get it).
SqueakDebug.log (3 KB) 01-01-70 00:33
7176 Browser minor always 09-03-08 00:59 05-03-11 18:16 Antony Blakey cwp normal assigned none none 3.10.2 open 0 When content in an OBColumn doesn't change when the switch is changed (e.g. OBRB Instance -> Trait) the change isn't propagated. Using the OmniBrowser RB, if in the second column you switch between Instance and Trait then the subsequent columns don't update. This is because the contents of the old and new lists are the same and OBColumn>>refreshAndSignal: doesn't signal a change of selection in that circumstance. SignalSelectionChangeInOBColumnEvenWhenListContentIsUnchanged-M7176-ASB.1.cs.gz (0 KB) 01-01-70 00:33
SignalSelectionChangeInOBColumnEvenWhenListContentIsUnchanged-M7176-ASB.2.cs.gz (0 KB) 01-01-70 00:33
7626 Tools minor always 04-26-11 21:14 05-02-11 17:10 FrankShearar leves normal resolved none none trunk fixed 0 Alphabetising message categories in a Browser doesn't preserve currently selected message category As above.
leves 05-01-11 01:09 The same is true for system categories. Removing the line "self selectSystemCategory: nil." from Browser >> #alphabetizeSystemCategories fixes that, but I wonder if it has any negative side effects. Fixing the message categories seems to be a bit harder.
FrankShearar 05-01-11 08:11 * http://source.squeakfoundation.org/inbox/Tools-fbs.346.mcz [^]
* http://source.squeakfoundation.org/inbox/ToolsTests-fbs.41.mcz [^]

I don't know if there are additional repercussions, but if we simply remember where we were, and restore afterwards, things should Just Work (because we already handle the case where a method/category disappears).
FrankShearar 05-02-11 17:10 leves added these to Trunk.
7596 Tools minor always 01-09-11 11:37 05-02-11 09:54 FrankShearar FrankShearar normal resolved none none trunk fixed 0 MessageNames, looking at Undeclared: MNU #allSuperclassesDo: 1. Search for "undec" in the toolbar.
2. Scroll down a bit to see "Undeclared".
3. Select "Undeclared".

Two MNU walkbacks:
* Dictionary(Object)>>doesNotUnderstand: #allSuperclassesDo:
* Dictionary(Object)>>doesNotUnderstand: #compiledMethodAt:ifAbsent:
This is not a duplicate of 0007595. The two bugs manifest at the same time, but may not be related.
FrankShearar 01-14-11 12:28 Possible fix uploaded to the Inbox:
* http://source.squeak.org/inbox/System-fbs.410.mcz [^]
* http://source.squeak.org/inbox/Tests-fbs.109.mcz [^]
FrankShearar 05-02-11 09:53 leves added these to Trunk on 2011/01/09.
7627 Nebraska minor always 04-30-11 05:15 04-30-11 05:25 garydunnhi normal new none none 4.2 open 0 telemophic connection times out immediately, did not wait 45 seconds Win7 talking to Mac OS X
Windows Firewall off
Home WiFi nextwork
opened listener on both systems
created badges on both systems
able to do text chat
audio chat works but win7 is faint and scratchy
able to drop morphs through badges
After clicking on "T" button on Mac to initiate telemorphic I see test about checking network, then in 1-3 seconds I get a ConnectionTimedOut error back trace. IP is correct.
At upper left corner I see mouse pointer labeled with win7 badge name, and a question mark below that

connectTo: hostAddress port: port waitForConnectionFor: timeout
    "Initiate a connection to the given port at the given host
    address. Waits until the connection is established or time outs."
    self connectNonBlockingTo: hostAddress port: port.
        waitForConnectionFor: timeout
        ifTimedOut: [ConnectionTimedOut signal: 'Cannot connect to '
                    , (NetNameResolver stringFromAddress: hostAddress) , ':' , port asString]


value of timeout is 45. There is no way the connect waited 45 seconds.
garydunnhi 04-30-11 05:25 Same behavior when initiated from Win7.
7625 Nebraska minor always 04-25-11 21:14 04-30-11 05:18 garydunnhi normal new none none 4.2 open 0 Nebraska badge always displays local name The first time a badge is pulled from the Objects menu it prompts for a name. After that, every new badge gets that person's name. According to the documentation at http://wiki.squeak.org/squeak/1356 [^] a client is supposed to create a badge for the server and for other participants they want to chat with. Also from that page:


If the server has a badge representing the client, then the client's name and/or picture will be associated with the client's cursor. If not, '???' will be used.

How does the person on the server set up these badges if they all have the same name?
garydunnhi 04-30-11 05:18 This may be by design. To create badge for other user see comments for EToySenderMorph.
7621 Morphic major always 04-19-11 01:31 04-19-11 01:31 garydunnhi normal new none none 4.2 open 0 text morph yellow button menu items not working Applies at least to a scrolling test morph.
None of the font attribute choices on the yellow button menu have any affct on selected text. Am able to set font attributes with halo FF buttons. Find is also broken.

Copy and paste have issues. The keyboard shortcuts (ctrl c, x, v) work as expected but selecting copy/paste commands from the yellow-button menu gives incorrect results, especially with two scrolling list morphs active ... focus does not track correctly.
6821 Monticello major always 12-20-07 16:18 04-15-11 14:45 Herbert Koenig avi normal assigned none none 3.10 open 0 can't load mcz or filein of classes with german umlauts the appended mcz or st file do not load into fresh 3.10.gamma 7159

They do into 3.8.0006665. 3.8 can also file out the class

The class was created in 3.10, the mcz was written in 3.10.
Fileout of the class was impossible in 3.10.

In any case the whole thing has to do with UTF8 characters.

VM is 3.10.6 Windows
OS is XP SP2 latest Update
test_umlauts.zip (1 KB) 01-01-70 00:33
Herbert Koenig 04-15-11 14:45 Problem is almost gone away.
I checked with a 10899 image and I could load the attached st. Also drop it on the image and select "file in entire file".

With MC open, merge, browse, changes work, so I assume the others to work too.

What does not yet work, is to drop the mcz on the image and select "load".

IMO this issue can be closed, at least the severity isn't major any more.
7620 Morphic tweak always 04-12-11 01:35 04-12-11 01:35 garydunnhi normal new none none 4.2 open 0 Better text attribute setting Right-click on selected text produces menu with "set font," "set style," and "set alignment." The set font and set style options are almost identicle in function, both set the font just in different ways. Recommend that set style give options found on text halo under Emphasis & alignment: normal / bold / italic / underlined / struckOut / narrow. Also recommend "struckOut" be changed to "strikethrough" in both places. As observed on FreeBSD.
7619 Documentation minor always 04-11-11 16:55 04-11-11 16:55 unoduetre casey normal assigned none none 4.2 open 0 Linux vm man page Man page for Linux vm states:
squeak foo.image hello.sq
but nowadays the correct method of running script would be:
squeak foo.image "file://$(pwd)/hello.sq" [^]
(prevous method shows: Error: No content to install)
For this reason it's impossible to write scripts directly in squeak. You have to use intermediate bash script or other method.
Either man page or squeak image should be corrected.
6655 OmniBrowser feature always 09-03-07 12:30 04-09-11 20:13 Damien Cassou cwp normal assigned none none open 0 Ordering command buttons Sometimes, you would like to enforce an order for some commands. For example, Romain Robbes has 2 commands labeled '<' and '>' which must come in this order and after normal commands.

This can be easily done if all commands can be sent a #index or #position message. This would return 1 for all commands per default. The commands are then sorted by numbers.
6806 OmniBrowser feature always 12-10-07 03:41 04-09-11 20:13 matthewf cwp normal assigned none none open 0 Spawn method editor (Cmd-o) is not implemented The normal browser has text-pane command that is not implemented in OmniBrowser. Spawn opens a method editor with the changes you have made in the browser, and makes the browser available for browsing again. The use case is:
1. Start editing a method
2. realize you need a little bit of information to complete the edit, but don't want to open another browser
3. Hit Cmd-o
4. The method edit is given it's own window, and the browser is free to browse again
6826 OmniBrowser minor N/A 12-22-07 04:51 04-09-11 20:11 wiz cwp normal assigned none none open 0 [RFE] How about a list that combines senders and implementors for a selector? Context: You are trying to track down a bug in a routine. Which means you have a question about a selector.

Presently you can chase senders or implementors (and the chasing of implementors has a bug so you do chase the one you want).

But what you really want to do is to look at all the implementors to see which ones are relevant and then to see who sends the selector.

Solution: If I could get a list that for a particular selector lists all implementors and senders of the selector in the same list that would save steps and enhance clarity.

Implementors will have different classes but the same selector.
Implementors may also be senders. so glance.

So distinguishing senders could be accomplish at a glance if senders are indented (or bulleted) in the list.

And then you would have something really useful for debugging. And a potentially simpler browser.
6824 OmniBrowser tweak always 12-22-07 00:13 04-09-11 20:10 wiz cwp normal assigned none none open 0 OBConfirmationRequest uses a poor default for saying no.
in a fresh sq3.10-7159dev07.12.1

In a workspace evaluate:
OBConfirmationRequest prompt: 'phui'

(You will get the box pictured in phui.gif)

The problem is that both the cancel choice and the cancel button both say cancel.

The less prominent choice returns false as it should.
The more prominent button returns nil.

Which leads to a debug box asking for a truth value.

There is a design choice here.

Either the big cancel button should return a default of false instead of nil.
This makes the box always return a truth. But loses a distinction where the user refuses to choose.*

Or the default choice should appear as something other than cancel. (Something like No would be good.)

Yours in curiosity and ser vice, --Jerome Peace

*Hmmm what would happen is someone deleted the box w/o answering?
phui.gif (3 KB) 01-01-70 00:33
phui2.png (1 KB) 01-01-70 00:33
wiz 12-22-07 01:03 Ha. I don't have edit privledges here.

This issue is related to 0001231
Resize window (eg workspace) makes scrollbar size and placement very incorrect
dr 01-09-08 14:07 Interesting, I only get a box with an ok and a cancel choice, but without a cancel button (see appended image phui2.png).
So for me this works as it should.
Damien Cassou 01-09-08 14:12 I don't see the relation with 0001231!
Damien Cassou 01-09-08 14:28 David, it's because you don't have UIEnhancements loaded.
dr 01-09-08 14:30 aha, okay, I see.
But then this bug is not related to OmniBrowser I guess?
Damien Cassou 01-09-08 14:31 This problem is visible when UIEnhancements is loaded. This package changes how things are displayed. The bug is in fact in ToolBuilder which does not allow confirmation requests with specific yes/no labels. Thus, the code for the confirmation dialog in OB used #chooseFrom:values:title: instead of a real confirmation dialog.
Damien Cassou 01-09-08 14:32 We should wait for ToolBuilder to provide a confirmation dialog with specified yes/no labels.
Damien Cassou 01-09-08 14:36 David, in fact it is because when ToolBuilder provides a correct message (something like #confirmYesLabel:NoLabel:), OB will have to use it. So, I let this bug open to remind us to fix this when ToolBuilder is ready.
Damien Cassou 01-10-08 07:43 The method UIManager>>confirm:trueChoice:falseChoice: is now implemented. I recommend to wait a bit before using it (until this is added to universe and UIEnhancements implement it too).
6837 OmniBrowser feature always 01-05-08 09:25 04-09-11 20:08 renggli cwp normal assigned none none open 0 Show hierarchy, definition, comment The menu commands show hierarchy, definition and comment are missing in OB. The functionality is basically there, except for show hierarchy that should display something like when being triggered on Number:

ProtoObject #()
    Object #()
        Magnitude #()
            Number #()
                Float #()
                Fraction #('numerator' 'denominator')
                Integer #()
                    LargePositiveInteger #()
                        LargeNegativeInteger #()
                    SmallInteger #()
                ScaledDecimal #('fraction' 'scale')
Damien Cassou 01-26-08 14:50 What is the difference between the two old commands 'show definition'/'show comment' and the OB filters 'instance'/'?' ? I don't see any.
renggli 01-27-08 17:14 None, as far as I see. Just that the filter-options also appear in the menu.

The functionality to display the whole class hierarchy is one of the few features of the old browser still missing in OB.
6931 OmniBrowser minor always 02-17-08 11:42 04-09-11 20:07 Nicolai Hess cwp normal assigned none none open 0 Choose dialog for "List of senders" ignores selected entry. Selecting implementors or senders button let you choose for which message
you want to see them. This does work for implementors
but not for senders. It always search for senders of the current
message and ignores what you selected from the choose-dialog.
Maybe OBSendersBrowser have to use

    ^self sendersNav: #sendersOfMessage

to create defaultMetaNode instead of

    ^self sendersNav: #senders

But I am not sure if it breaks code elsewhere.
Some tasks in Omnibrowser are delegated so many level deep
from caller to executor, that it is difficult to follow
an execution path.

ListOfSenders.1.cs (1 KB) 01-01-70 00:33
ash_logior 02-24-08 11:24 Using #sendersOfMessage instead of #senders sort of works, but it breaks the "chasing browsers" behavior in a "Senders of" browser.

ListOfSenders.1.cs is a simple fix for this bug.

The problem is in OBCmdBrowseList>>execute. The OBMessageNode instance that is used to determine the initial list of methods for the browser is set so that its "selector" ivar refers to the method you are currently browsing, and its "message" ivar refers to the method you select from OBChoiceRequest popup.

So the value of "selector" is only coincidentally relevant to the methods whose senders/implementors you'd like to see. But the value of "message" is always what you want, since you picked it yourself (or, since it's already the same as "selector").

And since sometimes the initial list of methods will be generated using "selector" (see OBMethodMode>>senders) and sometimes using "message" (see OBMessageNode>>implementors), the most straightforward solution is to tweak the OBMessageNode instance so that "selector" has the same value as "message". This instance doesn't get used for anything else later on, so there are no ill effects.
Damien Cassou 02-25-08 07:49 Please commit the fix directly to the repository http://source.wiresong.ca/ob. [^] You don't need any login/password. Before, please verify what you are going to commit by using the Changes button.
ash_logior 02-25-08 08:56 Damien,

OK--I committed the changes to OB-Standard-alog.327.
6997 OmniBrowser minor always 03-29-08 09:46 04-09-11 20:03 mberth cwp normal assigned none none open 0 Keystroke for pretty print menu item does not work I'm in a method source definition, the context menu says "pretty print (r)". Pressing Ctrl-R, or Alt-R does not work.
Damien Cassou 03-30-08 08:33 I'm assigning this bug to Lukas because if I remember correctly, he developed that command.

Thank you for the report.
renggli 03-30-08 08:50 That's a problem of Squeak and OB, not the pretty print command.

The pretty print command can be triggered from two places:

1. From the list of methods. Keyboard shortcuts are always local to a particular column, so if you move the mouse pointer over the method list and press Ctrl+R it works.

2. From the text area. Text commands don't support shortcuts other than the Squeak defaults that already cover all possible keyboard combinations. If you want to see that improved, vote for the Google Summer of Code Project 2008 on the new Text Editor Component.
6999 OmniBrowser minor always 04-03-08 03:16 04-09-11 20:02 rjriv cwp normal assigned none none open 0 Removing the last method in the method pane causes an "Error: subscript is out of bounds: ##" 1. Add two or more methods to a class.
2. Remove the one at the bottom of the list.
3. Try to click on any other method.
4. This will continue until you click out of the method pane.
OB Packages I have loaded:

Damien Cassou 04-03-08 06:41 Hi,

I can't reproduce your bug. Please tell me:

- What is the base image you are using? (Stock 3.9, 3.9.1, 3.10, squeak-dev (which one?))

- How did you get these particular versions installed ?

- How did you launch your browser ?

- Can you reproduce the bug in the last squeak-dev image?

7004 OmniBrowser minor always 04-05-08 21:10 04-09-11 20:01 matthewf cwp normal assigned none none open 0 Cannot resize the list panes in an Omnibrowser When trying to horizontally resize the list panes in an omnibrowser by dragging the divider between them, you end up moving the entire window instead.

Oddly, this works correctly when dragging the vertical divider between the text pane below and the lists above
Damien Cassou 04-06-08 16:46 I think the list have been made fixed size.
7077 OmniBrowser feature always 06-02-08 04:31 04-09-11 19:58 hfm cwp normal assigned none none open 0 Allow to open the Tracing Messages Browser from OmniBrowser This little patch will enable to open the TMB (browse SqueakSource.com to find it) from the OmniBrowser's message list menu.

(Tested under sq3.9.1-7075web08.05.2)
OB-TracingMessagesBrowser-hfm.1.mcz (2 KB) 01-01-70 00:33
Damien Cassou 06-02-08 06:58 You should post the package directly to source.wiresong.ca/ob. You don't need any login/password. However, we don't want to make TracingMessage Browser a dependency of OB. Does your code take care of that?
hfm 06-02-08 15:31 Ok, uploaded to source.wiresong.ca/ob: OB-TracingMessagesBrowser

I do not wanted to touch TMB nor OB, that's why I put this thing in a separate monticello package. It should not introduce any dependency at all.
Au revoir.
7206 OmniBrowser minor always 10-04-08 19:18 04-09-11 19:47 marcin_tustin cwp normal assigned none none open 0 Dragging a method to where it is already defined deletes it Dragging a method to where it is already defined deletes it, in omnibrowser. Using squeak one-click image.
6996 OmniBrowser tweak always 03-29-08 09:42 04-09-11 19:41 mberth cwp normal assigned none none open 0 Automatic pretty print of method source Omnibrowser lets you pretty print methods by a menu item. Additionally, it should prtty print changed methods when you accept the source (save). There is a Preference for this, called browseWithPrettyPrint: "If true, browsers will automatically format their contents".

I have attached a change set that fixes this, please review.
OmniBrowser-automatic-pretty-print.1.cs (1 KB) 01-01-70 00:33
Damien Cassou 03-30-08 08:32 Could you please commit directly to the Monticello repository? http://source.wiresong.ca/ob/. [^]

Thank you
davemccloskey 06-13-10 20:22 This CS will break saving new class definitions in the omnibrowser. Define the following to fix:

OBClassDefinition>>prettyPrint: text
    ^ text
7618 Any minor always 04-02-11 11:04 04-03-11 16:00 Saijanai normal new none none open 0 portal embedded in object shows no matter how big the object gets I rezzed a TTetrahedron object (http://croquet-src-01.oit.duke.edu:8886/Contributions [^] package: Lawsons-Mesh), centered around a portal. No matter how large the object became, the portal was still visible. SCript listed below:

Interesting effect, but I don't think it is intended.

http://www.youtube.com/watch?v=dIeI8bkpGcY [^] youtube video of problem

myHarness := CobaltHarness allInstances first.
    tetraRef3 := myHarness activeIsland future new: TTetrahedron.
    objRef3 := myHarness activeIsland future new: CobaltTFrameWithMenu .
    objRef3 future addChild: tetraRef3.
    myHarness activeSpace future addChild: objRef3.
objRef3 future translation: 0@00@0

tetraRef3 future colorize: Color blue.
        vertexApex := Vector3 x: 0 y: 1 z: 0.
    vertex1 := Vector3 x: 0.943 y:-0.333 z: 0.
    vertex2 := Vector3 x: -0.471 y:-0.333 z: 0.816.
    vertex3 := Vector3 x: -0.471 y:-0.333 z: -0.816.

[1 to: 1500 by: 5 do: [:i| (Delay forMilliseconds: 15) wait.
        objRef3 future addRotationAroundY: 5.
        tetraRef3 future vertexApex: i *0.01*vertexApex.
        tetraRef3 future vertex1: (0.01*i*vertex1).
        tetraRef3 future vertex2: (0.01*i*vertex2).
        tetraRef3 future vertex3: (0.01*i*vertex3).] ] fork.
KenCausey 04-03-11 16:00 As I told Saijanai on IRC, to my knowledge no one currently working on Croquet is still using this Mantis project (Croquet) and it is defunct.

If you (the reader) are such a person, and disagree, then please pipe up, otherwise I will likely close the report in time and lock the project so no further reports are made to it.
7617 www.squeak.org block always 03-21-11 02:15 03-21-11 02:17 matthewf urgent new none none open 0 Monticello versions in SqueakSource can be overwritten When uploading a .mcz file to SqueakSource, it apparently does no check to see if something is already there by that name, and overwrites it. This is a huge security hole. It means that anybody on the internet with a WebDav client could erase or alter the development history of any open repository (Squeak or pharo inboxes, for instance), and any rogue committer could do it for critical repositories (trunk, pharo).

Short of malice, this can also be done accidentally, and recently happened on the VMMaker project: http://lists.squeakfoundation.org/pipermail/vm-dev/2011-March/007222.html [^]
7616 Tools minor always 03-18-11 08:37 03-18-11 08:37 FrankShearar FrankShearar normal assigned none none trunk open 0 MessageSet>>fullOnClass: fails You get a MessageNotUnderstood in MessageSet>>metaClassIndicated because you have no message selected, and MessageSet>>selectedClassOrMetaclass returns the class of the message selected... which is nil.