On Fri, Dec 2, 2011 at 6:16 AM, Marcus Denker <marcus.denker@inria.fr> wrote:
Hi,

We had a look and the problem is that printOn: on Stream is defined to
print the contents of the Stream even though it might
not be initialized yet (e.g. when creating a Stream instance with #basicNew).

Yes, but the real problem is either the debugger or the the redefinition of subclassResponsibility. �When I try Stream basicNew printString in a Squeak image I get a notifier which says:
Stream(Object)>>error:
Stream(Object)>>subclassResponsibility
Stream>>contents
Stream>>printContentsOn:
�- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Stream>>printOn:
[] in Stream(Object)>>printStringLimitedTo:
String class(SequenceableCollection class)>>streamContents:limitedTo:
Stream(Object)>>printStringLimitedTo:
Stream(Object)>>printString


But in Pharo this is crashing. �I think you need to fix either the debugger or subclassResponsibility,


The simplest solution is to just not print the contents of Streams in #printOn:

http://code.google.com/p/pharo/issues/detail?id=5047

� � � �Stream should not print its contents in printOn:

Reason:

=> Debugging leads to change the state of Stream when looking at it
=> Network streams load all content
=> unitialized Streams has undefined behavior for printing

Solution: remove #printOn:

On Fri, Dec 2, 2011 at 9:08 AM, St�phane Ducasse
<stephane.ducasse@inria.fr> wrote:
>>>>
>>>> I only had a look in Pharo 1.4
>>>> It sounds like a subtle bug related to introduction of
>>>> SubclassResponsibility in Pharo.
>>>> If you revert Object>>subclassResponsibility to its previous version
>>>> you get a more reliable error.
>>>
>>> What would be your hypothesis? Because I'm stuck.
>>> error: is also signaling an exception
>>>
>>> error: aString
>>> � � � �"Throw a generic Error exception."
>>>
>>> � � � �^Error new signal: aString
>>>
>>> So I wonder why one is more robust.
>>>
>>
>> I'm stuck too, and the Debugger is currently unusable in Pharo 1.4 (I
>> just can't step over�)
>
> Strange. Because I use it.
> Do you have a scenario that we can focus on to fix the problem you see.
>
>
>> I give up. I only had time for an easy task...
>>
>> Nicolas
>>
>>>
>>>
>>>>
>>>> Nicolas
>>>>
>>>> 2011/12/1 Larry White <ljw1001@gmail.com>:
>>>>> I was able to replicate with a clean version of the Seaside 3.0.6 One Click
>>>>> download by executing Stream #basicNew in a workspace. �It did work a couple
>>>>> times ok using "do it" from the menu, but seems to lock pretty regularly
>>>>> using print or explore keyboard shortcuts.
>>>>>
>>>>> thanks.
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Dec 1, 2011 at 1:33 PM, Larry White <ljw1001@gmail.com> wrote:
>>>>>>
>>>>>> I can do it with control-P (print) in the Workspace. �I just did it with a
>>>>>> single try, though sometimes it takes more than one. �Speed isn't an issue,
>>>>>> I can wait 10 minutes and see it happen sometimes..
>>>>>>
>>>>>> I have to take a break now, but when I get a few minutes, I'll try again
>>>>>> with a fresh install of the latest Seaside one-click for the mac.
>>>>>>
>>>>>> thanks.
>>>>>>
>>>>>> On Thu, Dec 1, 2011 at 1:20 PM, Schwab,Wilhelm K <bschwab@anest.ufl.edu>
>>>>>> wrote:
>>>>>>>
>>>>>>> I just tried to hang 1.1.1 (using a traditional linux vm) and a 1.4 image
>>>>>>> with a Cog vm (also linux). �No problems, but I do have questions that might
>>>>>>> be important to others trying to reproduce it:
>>>>>>>
>>>>>>> (1) how fast do you do this?
>>>>>>> (2) do you inspect the instances, or just let them get gc'd immediately?
>>>>>>>
>>>>>>> Bill
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ________________________________
>>>>>>> From: pharo-project-bounces@lists.gforge.inria.fr
>>>>>>> [pharo-project-bounces@lists.gforge.inria.fr] on behalf of Larry White
>>>>>>> [ljw1001@gmail.com]
>>>>>>> Sent: Thursday, December 01, 2011 12:56 PM
>>>>>>> To: Pharo-project@lists.gforge.inria.fr
>>>>>>> Subject: Re: [Pharo-project] VM freezes sending #basicNew to Stream
>>>>>>> subclass
>>>>>>>
>>>>>>> I can do it with
>>>>>>>
>>>>>>> Stream basicNew.
>>>>>>>
>>>>>>> but I have to invoke it twice. The first time it works ok.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Dec 1, 2011 at 12:48 PM, St�phane Ducasse
>>>>>>> <stephane.ducasse@inria.fr> wrote:
>>>>>>>>
>>>>>>>> gary
>>>>>>>>
>>>>>>>> can you post the smallest code that makes the system hangs?
>>>>>>>>
>>>>>>>> Stef
>>>>>>>>
>>>>>>>> On Dec 1, 2011, at 4:48 PM, Larry White wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Throwing this out there because it may be a bug.
>>>>>>>>>
>>>>>>>>> I'm running the Seaside one-click install on OS X Lion.
>>>>>>>>> Pharo1.3
>>>>>>>>> Latest update: #13302
>>>>>>>>>
>>>>>>>>> I can reliably cause my VM to freeze up and need to Force-Quit it from
>>>>>>>>> the OS.
>>>>>>>>>
>>>>>>>>> I'm implementing (copying) the probability logic from the blue book.
>>>>>>>>> When I tried to create an instance of the Binomial class, the system hung. I
>>>>>>>>> can replicate the problem by sending the message #basicNew to
>>>>>>>>> ProbabilityDistribution. ProbabilityDistribution is a direct subclass of
>>>>>>>>> Stream and I haven't overridden or modified #basicNew.
>>>>>>>>>
>>>>>>>>> What's happening is that it fails in the BlockClosure [anObject doit],
>>>>>>>>> but only when I instantiate a member of this particular class hierarchy. In
>>>>>>>>> the probability classes, a #doIt in a Workspace hits the line "self suspend"
>>>>>>>>> in the #terminate method of Process and the VM hangs there.
>>>>>>>>>
>>>>>>>>> I believe they had ProbabilityDistribution subclass from Stream
>>>>>>>>> because sampling from a distribution is like reading from a Stream, but I
>>>>>>>>> don't think any there's any actual shared code, so I switched the superclass
>>>>>>>>> of ProbabilityDistribution to Object and the code works fine now.
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> Larry
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>



--
--
Marcus Denker� --� denker@acm.org
http://www.marcusdenker.de




--
best,
Eliot