Cog on linux (was: Re: [squeak-dev] Re: UI lockup in Squeak 4.1)

Igor Stasenko siguctua at gmail.com
Wed Jul 14 19:39:09 UTC 2010


One thing why i don't like developing on linux is
overly complicated design around dynamic linkage.
With all those libraries, paths, compiler/linker options ...


On 14 July 2010 21:23, Chris Muller <asqueaker at gmail.com> wrote:
> Hi Eliot, if you replied to my original post under a different
> subject, I must have missed it:
>
>  http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-June/151522.html
>
> I do not have adequate C or C++ experience to even run the debugger.
> I really just want to _get_ a Cog VM so I can be more productive in
> getting my work done so I can then work on things like learning new
> langauges and tools...   :)
>
> I had hoped, given that the problem seems to be exposed (the
> double-slash) that the cause and solution would be obvious to
> someone..
>
>
>
>
> On Wed, Jul 14, 2010 at 12:58 PM, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>>
>>
>> On Wed, Jul 14, 2010 at 10:22 AM, Chris Muller <asqueaker at gmail.com> wrote:
>>>
>>> I followed these instructions to the letter, and get the same result I
>>> got a few weeks ago.  I posted a question then, but no responses.  May
>>> I try again?
>>
>> Chris, I believe I replied suggesting you step though the dynamic loading
>> code to get more information.
>> I think everything starts from loadModules in
>> platforms/unix/vm/sqUnixMain.c.
>> I suggest you rerun the configure command to eliminate all optimization
>> (including deleting any -fomit-frame-pointer) and then step from loadModules
>> and see why you don't get to a functional dlopen call
>> in platforms/unix/vm/sqUnixExternalPrims.c.
>> HTH
>> Eliot
>>
>>>
>>> Everything seems to go just fine throughout these build instructions.
>>> For the final step, I put it in /usr/local/lib.
>>>
>>>    make install prefix=/usr/local/lib/squeak
>>>
>>> and I made sure /usr/local/lib/squeak exists before doing the make
>>> install.
>>>
>>> The make install appears to work fine, and I am able to see squeak
>>> -version:
>>>
>>> $ squeak -version
>>> 3.9-7 #1 Wed Jul 14 12:07:56 CDT 2010 gcc 4.3.3
>>> Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.20]
>>> Linux chrisT60p 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59
>>> UTC 2009 i686 GNU/Linux
>>> plugin path: /opt/4dst/thirdparty/squeak/lib/squeak/3.9-7/ [default:
>>> /opt/4dst/thirdparty/squeak/lib/squeak/3.9-7/]
>>>
>>> However, when I try to launch an image:
>>>
>>>  squeak my.image
>>>
>>> The image does not launch and I get the following:
>>>
>>>    could not find display driver vm-display-X11; either:
>>>      - check that /usr/local/lib/squeak/3.9-7//vm-display-X11.so
>>> exists, or
>>>      - use the '-plugins <path>' option to tell me where it is, or
>>>      - remove DISPLAY from your environment.
>>>
>>> notice the double-slash in reference to the plugins location.  Perhaps
>>> that's the problem, but what's the correct solution?
>>>
>>> Any advice is greatly appreciated..
>>>
>>>  - Chris
>>>
>>>
>>>
>>> On Tue, Jul 13, 2010 at 4:04 PM, Levente Uzonyi <leves at elte.hu> wrote:
>>> > On Tue, 13 Jul 2010, Rob Withers wrote:
>>> >
>>> >> Thanks Levente.  Unfortunately it did not work:
>>> >>
>>> >> ./lib/squeak/3.9-7/squeak: /lib/libc.so.6: version `GLIBC_2.11' not
>>> >> found
>>> >> (required by ./lib/squeak/3.9-7/squeak)
>>> >
>>> > Seems like you have to build it yourself. Fortunately it's very easy,
>>> > since
>>> > Eliot commits the generated sources to the svn repo. So you can build a
>>> > CogVM/StackVM without VMMaker. Here is how:
>>> >
>>> > "How to build the Cog Croquet VM on Unix
>>> > -------------------------------
>>> > 1. Install the tools (gcc, X11-devel, etc (e.g. libpng, libX11 & libxt
>>> > source))
>>> > 2. Check out the following sources from svn (if you haven't already - if
>>> > you're
>>> >   reading this in unixbuild its likely you've already got the sources)
>>> >     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms
>>> >     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src
>>> >     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/unixbuild
>>> > 3. Open a shell, cd into the unixbuild/bld directory and execute
>>> >     ../../platforms/unix/config/configure CFLAGS="-g -O2 -msse2
>>> > -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1
>>> > -DCOGMTVM=0"
>>> > LIBS=-lpthread
>>> >     make install prefix=WhereYouWantTheVmToGo
>>> > 4. At the end of it you'll get a new VM in the path provided via
>>> > -prefix"
>>> >
>>> >
>>> > Levente
>>> >
>>> >>
>>> >> Rob
>>> >>
>>> >>
>>> >>
>>> >> ________________________________
>>> >> From: Levente Uzonyi <leves at elte.hu>
>>> >> To: The general-purpose Squeak developers list
>>> >> <squeak-dev at lists.squeakfoundation.org>
>>> >> Sent: Tue, July 13, 2010 3:21:43 PM
>>> >> Subject: Re: Cog on linux (was: Re: [squeak-dev] Re: UI lockup in
>>> >> Squeak
>>> >> 4.1)
>>> >>
>>> >> On Tue, 13 Jul 2010, Rob Withers wrote:
>>> >>
>>> >>> --------------------------------------------------
>>> >>> From: "Levente Uzonyi" <leves at elte.hu>
>>> >>> Sent: Tuesday, July 13, 2010 12:46 PM
>>> >>> To: "The general-purpose Squeak developers list"
>>> >>> <squeak-dev at lists.squeakfoundation.org>
>>> >>> Subject: Cog on linux (was: Re: [squeak-dev] Re: UI lockup in Squeak
>>> >>> 4.1)
>>> >>>
>>> >>>> On Tue, 13 Jul 2010, Rob Withers wrote:
>>> >>>>
>>> >>>>>
>>> >>>>> --------------------------------------------------
>>> >>>>> From: "Andreas Raab" <andreas.raab at gmx.de>
>>> >>>>> Sent: Tuesday, July 13, 2010 11:29 AM
>>> >>>>> To: "The general-purpose Squeak developers list"
>>> >>>>> <squeak-dev at lists.squeakfoundation.org>
>>> >>>>> Subject: [squeak-dev] Re: UI lockup in Squeak 4.1
>>> >>>>>
>>> >>>>>> On 7/13/2010 6:39 AM, Rob Withers wrote:
>>> >>>>>>>
>>> >>>>>>> The low-space watcher is running, at least before the problem
>>> >>>>>>> starts.
>>> >>>>>>> I
>>> >>>>>>> do eventually run out of memory, but the uninterruptable state
>>> >>>>>>> happens
>>> >>>>>>> before this.
>>> >>>>>>
>>> >>>>>> In which case you want to do the following:
>>> >>>>>> * Launch your app and wait until it's in the "growing state"
>>> >>>>>> * Hit F2 and from the VM's preference menu choose "Debug" and then
>>> >>>>>> "Print all processes"
>>> >>>>>>
>>> >>>>>> This will dump a list of all the call stacks of all processes. One
>>> >>>>>> of
>>> >>>>>> them is the culprit consuming memory and you'll probably be able to
>>> >>>>>> tell
>>> >>>>>> quickly from just looking at it (if not, you can email the output
>>> >>>>>> here but
>>> >>>>>> it typically takes a domain expert to understand what's going
>>> >>>>>> wrong).
>>> >>>>>>
>>> >>>>>
>>> >>>>> Thanks for this pointer, Andreas.
>>> >>>>>
>>> >>>>> This time it was a Cog VM which spasmed, which I use for my client
>>> >>>>> (Squeak 4.1 for server for use with linux vm - I have no ability to
>>> >>>>> compile
>>> >>>>> a linux Cog vm:  would love if someone posted one that could be
>>> >>>>> launched
>>> >>>>> headless for my webhost).
>>> >>>>
>>> >>>> Cog works, but i think you're trying to use the -headless switch,
>>> >>>> which
>>> >>>> (is deprecated) and tells the vm to use the X11 display, but with no
>>> >>>> window.
>>> >>>> Servers usually don't have X11, so it won't work. You better use
>>> >>>> -vm-display-null (and -vm-sound-null). Try squeak --help for further
>>> >>>> useful
>>> >>>> options (like tuning Cog).
>>> >>>>
>>> >>>
>>> >>> I am trying to use the -headless switch.  Good to know it is
>>> >>> deprecated.
>>> >>>  So you happen to have a Cog for linux binary (version 17 - 20), which
>>> >>> I
>>> >>> could use?
>>> >>
>>> >> I have one, but I'm not sure it will work on your server. You can find
>>> >> it
>>> >> here: http://leves.web.elte.hu/squeak/cog17.tar.gz . It's built on
>>> >> ubuntu
>>> >> 10.04 and is optimized for core2.
>>> >>
>>> >>
>>> >> Levente
>>> >>
>>> >>>
>>> >>> Thanks,
>>> >>> Rob
>>> >>>
>>> >>>>
>>> >>>> Levente
>>> >>>>
>>> >>>>>
>>> >>>>> It started running at 100% and I did your F2 -> Debug Options ->
>>> >>>>> Print
>>> >>>>> all processes.  It started dumping a LOT to the Debug Console, then
>>> >>>>> it
>>> >>>>> froze, still at 100%, but no increase in memory now and it went (Not
>>> >>>>> Responding) and greyed out the window.
>>> >>>>>
>>> >>>>> Luckily, I was able to see enough of the stack that was causing
>>> >>>>> problems. It is infinitely looping in this method:
>>> >>>>>
>>> >>>>> LanguageEnvironment class>>#localeID: localeID
>>> >>>>> ^self knownEnvironments at: localeID ifAbsent: [self localeID:
>>> >>>>> (LocaleID isoLanguage: 'en')]
>>> >>>>>
>>> >>>>> This has nothing to do with my code, except I must be calling
>>> >>>>> something
>>> >>>>> that enters this loop.  It happens in both Cog (Windows) and
>>> >>>>> Squeak4.1
>>> >>>>> (Linux <headless> and Windows).
>>> >>>>>
>>> >>>>> Not sure how to fix this.
>>> >>>>>
>>> >>>>> Rob
>>> >>>>>
>>> >>>>>> Cheers,
>>> >>>>>>  - Andreas
>>> >>>>>>
>>> >>>>>
>>> >>>>>
>>> >>>>
>>> >>>
>>> >>>
>>> >
>>> >
>>>
>>
>>
>>
>>
>>
>
>



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list