2011/12/2 Nicolas Cellier <[email protected]>: > 2011/12/2 Marcus Denker <[email protected]>: >> 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). >> >> 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: >> > > No, no, no I don't agree, you are hiding the main problem, not solving it. > The main problem is not this error, the main problem is that the > debugger does not appear when it should. > > Nicolas >
The problem with SubclassResponsibility is its #description. The #description method will send #messageText which will send #standardMessageText which will try to print the signaller which is the unprintable (not initialized) Stream basicNew. Thus when the UnhandledError triggers a (Smalltalk tools debugError: anException) it fails with a new SubclassResponsibility error... This does not happen previously with an ordinary Error which has a more robust #description, thus SubclassResponsibility effectively introduced a new weakness. With current state of debugger in Pharo 1.4, this is not a pleasure, IMO it's very urgent to fix it. Who ever messed with Debugger/Context or any such dangerous internals has a FirstClassResponsibility to make it work or revert. Nicolas >> On Fri, Dec 2, 2011 at 9:08 AM, Stéphane Ducasse >> <[email protected]> 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 <[email protected]>: >>>>>>> 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 <[email protected]> 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 >>>>>>>> <[email protected]> >>>>>>>> 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: [email protected] >>>>>>>>> [[email protected]] on behalf of Larry White >>>>>>>>> [[email protected]] >>>>>>>>> Sent: Thursday, December 01, 2011 12:56 PM >>>>>>>>> To: [email protected] >>>>>>>>> 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 >>>>>>>>> <[email protected]> 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 -- [email protected] >> http://www.marcusdenker.de >>
