Re: [squeak-dev] Re: Cog on linux

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
57 messages Options
123
Reply | Threaded
Open this post in threaded view
|

Re: [squeak-dev] Re: Cog on linux

Levente Uzonyi-2
 
On Wed, 14 Jul 2010, Frank Shearar wrote:

> On 2010/07/13 23:04, Levente Uzonyi 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"
>
> Are there any additional requirements like gcc version, for instance?
>
> I ask because I get errors on the above instructions, on FreeBSD 6.4, running
> gcc 3.4.6. I can attach configure's output and whatnot, if you're interested.

If configure failed, then please attach the output and continue this
thread on the vm-dev list.


Levente

>
> frank
>
>> Levente
>>
>>>
>>> Rob
>>>
>>>
>>>
>>> ________________________________
>>> From: Levente Uzonyi <[hidden email]>
>>> To: The general-purpose Squeak developers list
>>> <[hidden email]>
>>> 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" <[hidden email]>
>>>> Sent: Tuesday, July 13, 2010 12:46 PM
>>>> To: "The general-purpose Squeak developers list"
>>>> <[hidden email]>
>>>> 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" <[hidden email]>
>>>>>> Sent: Tuesday, July 13, 2010 11:29 AM
>>>>>> To: "The general-purpose Squeak developers list"
>>>>>> <[hidden email]>
>>>>>> 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
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>
>>
>>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Frank Shearar
 
On 2010/07/14 23:29, Levente Uzonyi wrote:

>
> On Wed, 14 Jul 2010, Frank Shearar wrote:
>
>> On 2010/07/13 23:04, Levente Uzonyi 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"
>>
>> Are there any additional requirements like gcc version, for instance?
>>
>> I ask because I get errors on the above instructions, on FreeBSD 6.4,
>> running gcc 3.4.6. I can attach configure's output and whatnot, if
>> you're interested.
>
> If configure failed, then please attach the output and continue this
> thread on the vm-dev list.
I didn't expect the instructions to work, since FreeBSD isn't Linux. So
having said that, I've attached the output from configure (which looks
fine, to my untrained eye) and the output from make install (which
generates errors).

That first error:

In file included from /usr/home/frank/temp/src/vm/gcc3x-cointerp.c:21:
/usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced
by <stdlib.h>"

is probably the culprit, I suppose?

frank

>
>
> Levente
>
>>
>> frank
>>
>>> Levente
>>>
>>>>
>>>> Rob
>>>>
>>>>
>>>>
>>>> ________________________________
>>>> From: Levente Uzonyi <[hidden email]>
>>>> To: The general-purpose Squeak developers list
>>>> <[hidden email]>
>>>> 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" <[hidden email]>
>>>>> Sent: Tuesday, July 13, 2010 12:46 PM
>>>>> To: "The general-purpose Squeak developers list"
>>>>> <[hidden email]>
>>>>> 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" <[hidden email]>
>>>>>>> Sent: Tuesday, July 13, 2010 11:29 AM
>>>>>>> To: "The general-purpose Squeak developers list"
>>>>>>> <[hidden email]>
>>>>>>> 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
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>
>>
>>
>
>


configure.txt (11K) Download Attachment
make-install.txt (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Cog on linux

Rob Withers
 
Linux version 2.6.33-5.19.BHsmp ([hidden email]) (gcc version 4.1.2
2008070                           4 (Red Hat 4.1.2-48))

I have attached the error from make install...

/home1/vawhigso/public_html/squeakelib/Cog/platforms/unix/vm/sqUnixHeartbeat.c:161:3:
error: #error "no high res clock defined"

Rob



--------------------------------------------------
From: "Frank Shearar" <[hidden email]>
Sent: Thursday, July 15, 2010 8:30 AM
To: <[hidden email]>
Subject: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

>



> On 2010/07/14 23:29, Levente Uzonyi wrote:
>>
>> On Wed, 14 Jul 2010, Frank Shearar wrote:
>>
>>> On 2010/07/13 23:04, Levente Uzonyi 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"
>>>
>>> Are there any additional requirements like gcc version, for instance?
>>>
>>> I ask because I get errors on the above instructions, on FreeBSD 6.4,
>>> running gcc 3.4.6. I can attach configure's output and whatnot, if
>>> you're interested.
>>
>> If configure failed, then please attach the output and continue this
>> thread on the vm-dev list.
>
> I didn't expect the instructions to work, since FreeBSD isn't Linux. So
> having said that, I've attached the output from configure (which looks
> fine, to my untrained eye) and the output from make install (which
> generates errors).
>
> That first error:
>
> In file included from /usr/home/frank/temp/src/vm/gcc3x-cointerp.c:21:
> /usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced
> by <stdlib.h>"
>
> is probably the culprit, I suppose?
>
> frank
>
>>
>>
>> Levente
>>
>>>
>>> frank
>>>
>>>> Levente
>>>>
>>>>>
>>>>> Rob
>>>>>
>>>>>
>>>>>
>>>>> ________________________________
>>>>> From: Levente Uzonyi <[hidden email]>
>>>>> To: The general-purpose Squeak developers list
>>>>> <[hidden email]>
>>>>> 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" <[hidden email]>
>>>>>> Sent: Tuesday, July 13, 2010 12:46 PM
>>>>>> To: "The general-purpose Squeak developers list"
>>>>>> <[hidden email]>
>>>>>> 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" <[hidden email]>
>>>>>>>> Sent: Tuesday, July 13, 2010 11:29 AM
>>>>>>>> To: "The general-purpose Squeak developers list"
>>>>>>>> <[hidden email]>
>>>>>>>> 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
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>

make_install_output.txt (627 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Frank Shearar
In reply to this post by Frank Shearar
 
On 2010/07/15 14:30, Frank Shearar wrote:

>
>
>
>
> On 2010/07/14 23:29, Levente Uzonyi wrote:
>>
>> On Wed, 14 Jul 2010, Frank Shearar wrote:
>>
>>> On 2010/07/13 23:04, Levente Uzonyi 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"
>>>
>>> Are there any additional requirements like gcc version, for instance?
>>>
>>> I ask because I get errors on the above instructions, on FreeBSD 6.4,
>>> running gcc 3.4.6. I can attach configure's output and whatnot, if
>>> you're interested.
>>
>> If configure failed, then please attach the output and continue this
>> thread on the vm-dev list.
>
> I didn't expect the instructions to work, since FreeBSD isn't Linux. So
> having said that, I've attached the output from configure (which looks
> fine, to my untrained eye) and the output from make install (which
> generates errors).
>
> That first error:
>
> In file included from /usr/home/frank/temp/src/vm/gcc3x-cointerp.c:21:
> /usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced
> by <stdlib.h>"
>
> is probably the culprit, I suppose?

Yes, maybe I'll learn to hack a bit first. If I manually edit
gcc3x-cointerp.c and replace malloc.h with stdlib.h, compilation does
indeed proceed much further. Then it fails with this:

/usr/home/frank/temp/platforms/unix/vm/sqUnixHeartbeat.c:383: error:
'PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' undeclared here (not in a
function)

FreeBSD's pthread.h doesn't contain this #define. In fact, nothing in
/usr/include does. I'll investigate further!

frank

>
> frank
>
>>
>>
>> Levente
>>
>>>
>>> frank
>>>
>>>> Levente
>>>>
>>>>>
>>>>> Rob
>>>>>
>>>>>
>>>>>
>>>>> ________________________________
>>>>> From: Levente Uzonyi <[hidden email]>
>>>>> To: The general-purpose Squeak developers list
>>>>> <[hidden email]>
>>>>> 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" <[hidden email]>
>>>>>> Sent: Tuesday, July 13, 2010 12:46 PM
>>>>>> To: "The general-purpose Squeak developers list"
>>>>>> <[hidden email]>
>>>>>> 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" <[hidden email]>
>>>>>>>> Sent: Tuesday, July 13, 2010 11:29 AM
>>>>>>>> To: "The general-purpose Squeak developers list"
>>>>>>>> <[hidden email]>
>>>>>>>> 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
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Randal L. Schwartz
 
>>>>> "Frank" == Frank Shearar <[hidden email]> writes:

Frank> /usr/home/frank/temp/platforms/unix/vm/sqUnixHeartbeat.c:383: error:
Frank> PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' undeclared here (not in a function)

Frank> FreeBSD's pthread.h doesn't contain this #define. In fact, nothing in
Frank> /usr/include does. I'll investigate further!

Ewww.  Why do people presume everything's Linux like that?

I've seen some tun/tap code like that too.  Yup, tun/tap have been
ported everywhere (even works on my OSX box), but then people use
Linux'isms on top of that, and I can't use it (yes, I'm looking at you,
"socat").

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[hidden email]> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion
Reply | Threaded
Open this post in threaded view
|

Re: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Nicolas Cellier
 
2010/7/15 Randal L. Schwartz <[hidden email]>

>>>>> "Frank" == Frank Shearar <[hidden email]> writes:

Frank> /usr/home/frank/temp/platforms/unix/vm/sqUnixHeartbeat.c:383: error:
Frank> PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' undeclared here (not in a function)

Frank> FreeBSD's pthread.h doesn't contain this #define. In fact, nothing in
Frank> /usr/include does. I'll investigate further!

Ewww.  Why do people presume everything's Linux like that?


Because Smalltalkers are happy to be immune to this kind of detail behind their vm?
Because documentations about standards are not that cheap for unpaid people?
Because there is not enough manpower and such community project has to work by gradual error/correction cycles rather than planned development?

Nicolas
 
I've seen some tun/tap code like that too.  Yup, tun/tap have been
ported everywhere (even works on my OSX box), but then people use
Linux'isms on top of that, and I can't use it (yes, I'm looking at you,
"socat").

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[hidden email]> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion

Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Eliot Miranda-2
In reply to this post by Rob Withers
 


On Thu, Jul 15, 2010 at 5:57 AM, Rob Withers <[hidden email]> wrote:
 
Linux version 2.6.33-5.19.BHsmp ([hidden email]) (gcc version 4.1.2 2008070                           4 (Red Hat 4.1.2-48))

I have attached the error from make install...

/home1/vawhigso/public_html/squeakelib/Cog/platforms/unix/vm/sqUnixHeartbeat.c:161:3: error: #error "no high res clock defined"

If you look at the code the error is pointing you at:

#if defined(__GNUC__) && ( defined(i386) || defined(__i386) || defined(__i386__)  \
            || defined(i486) || defined(__i486) || defined (__i486__) \
            || defined(intel) || defined(x86) || defined(i86pc) )
    __asm__ __volatile__ ("rdtsc" : "=A"(value));
#else
# error "no high res clock defined"
#endif

you'll see the system expects an x86.  Are you on an x86-64?  If so you need to specify something like -m32 in the CFLAGS and/or supply a flag with te same semantics to configure.


HTH
Eliot


Rob



--------------------------------------------------
From: "Frank Shearar" <[hidden email]>
Sent: Thursday, July 15, 2010 8:30 AM
To: <[hidden email]>
Subject: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)





On 2010/07/14 23:29, Levente Uzonyi wrote:

On Wed, 14 Jul 2010, Frank Shearar wrote:

On 2010/07/13 23:04, Levente Uzonyi 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"

Are there any additional requirements like gcc version, for instance?

I ask because I get errors on the above instructions, on FreeBSD 6.4,
running gcc 3.4.6. I can attach configure's output and whatnot, if
you're interested.

If configure failed, then please attach the output and continue this
thread on the vm-dev list.

I didn't expect the instructions to work, since FreeBSD isn't Linux. So
having said that, I've attached the output from configure (which looks
fine, to my untrained eye) and the output from make install (which
generates errors).

That first error:

In file included from /usr/home/frank/temp/src/vm/gcc3x-cointerp.c:21:
/usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced
by <stdlib.h>"

is probably the culprit, I suppose?

frank



Levente


frank

Levente


Rob



________________________________
From: Levente Uzonyi <[hidden email]>
To: The general-purpose Squeak developers list
<[hidden email]>
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" <[hidden email]>
Sent: Tuesday, July 13, 2010 12:46 PM
To: "The general-purpose Squeak developers list"
<[hidden email]>
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" <[hidden email]>
Sent: Tuesday, July 13, 2010 11:29 AM
To: "The general-purpose Squeak developers list"
<[hidden email]>
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

















Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Rob Withers
 
Eliot,
 
I am on 8 of these puppies.  I'll try -m32 in the CFLAGS and let you know....after my doc appt.   Rob
 
processor       : 7
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Xeon(R) CPU           E5335  @ 2.00GHz
stepping        : 7
cpu MHz         : 2000.252
cache size      : 4096 KB
physical id     : 1
siblings        : 4
core id         : 3
cpu cores       : 4
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx tm2 ssse3 cx16 xtpr pdcm dca lahf_lm tpr_shadow
bogomips        : 3999.45
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

Sent: Thursday, July 15, 2010 2:52 PM
Subject: Re: [Vm-dev] Cog on linux




On Thu, Jul 15, 2010 at 5:57 AM, Rob Withers <[hidden email]> wrote:

Linux version 2.6.33-5.19.BHsmp ([hidden email]) (gcc version 4.1.2 2008070                           4 (Red Hat 4.1.2-48))

I have attached the error from make install...

/home1/vawhigso/public_html/squeakelib/Cog/platforms/unix/vm/sqUnixHeartbeat.c:161:3: error: #error "no high res clock defined"

If you look at the code the error is pointing you at:

#if defined(__GNUC__) && ( defined(i386) || defined(__i386) || defined(__i386__)  \
            || defined(i486) || defined(__i486) || defined (__i486__) \
            || defined(intel) || defined(x86) || defined(i86pc) )
    __asm__ __volatile__ ("rdtsc" : "=A"(value));
#else
# error "no high res clock defined"
#endif

you'll see the system expects an x86.  Are you on an x86-64?  If so you need to specify something like -m32 in the CFLAGS and/or supply a flag with te same semantics to configure.


HTH
Eliot


Rob



--------------------------------------------------
From: "Frank Shearar" <[hidden email]>
Sent: Thursday, July 15, 2010 8:30 AM
To: <[hidden email]>
Subject: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)





On 2010/07/14 23:29, Levente Uzonyi wrote:

On Wed, 14 Jul 2010, Frank Shearar wrote:

On 2010/07/13 23:04, Levente Uzonyi 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"

Are there any additional requirements like gcc version, for instance?

I ask because I get errors on the above instructions, on FreeBSD 6.4,
running gcc 3.4.6. I can attach configure's output and whatnot, if
you're interested.

If configure failed, then please attach the output and continue this
thread on the vm-dev list.

I didn't expect the instructions to work, since FreeBSD isn't Linux. So
having said that, I've attached the output from configure (which looks
fine, to my untrained eye) and the output from make install (which
generates errors).

That first error:

In file included from /usr/home/frank/temp/src/vm/gcc3x-cointerp.c:21:
/usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced
by <stdlib.h>"

is probably the culprit, I suppose?

frank



Levente


frank

Levente


Rob



________________________________
From: Levente Uzonyi <[hidden email]>
To: The general-purpose Squeak developers list
<[hidden email]>
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" <[hidden email]>
Sent: Tuesday, July 13, 2010 12:46 PM
To: "The general-purpose Squeak developers list"
<[hidden email]>
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" <[hidden email]>
Sent: Tuesday, July 13, 2010 11:29 AM
To: "The general-purpose Squeak developers list"
<[hidden email]>
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

















Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Eliot Miranda-2
 


On Thu, Jul 15, 2010 at 12:03 PM, Rob Withers <[hidden email]> wrote:
 
Eliot,
 
I am on 8 of these puppies.  I'll try -m32 in the CFLAGS and let you know....after my doc appt.   Rob

you'll also want -m32 in all link commands. 
 
processor       : 7
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Xeon(R) CPU           E5335  @ 2.00GHz
stepping        : 7
cpu MHz         : 2000.252
cache size      : 4096 KB
physical id     : 1
siblings        : 4
core id         : 3
cpu cores       : 4
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx tm2 ssse3 cx16 xtpr pdcm dca lahf_lm tpr_shadow
bogomips        : 3999.45
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

Sent: Thursday, July 15, 2010 2:52 PM
Subject: Re: [Vm-dev] Cog on linux




On Thu, Jul 15, 2010 at 5:57 AM, Rob Withers <[hidden email]> wrote:

Linux version 2.6.33-5.19.BHsmp ([hidden email]) (gcc version 4.1.2 2008070                           4 (Red Hat 4.1.2-48))

I have attached the error from make install...

/home1/vawhigso/public_html/squeakelib/Cog/platforms/unix/vm/sqUnixHeartbeat.c:161:3: error: #error "no high res clock defined"

If you look at the code the error is pointing you at:

#if defined(__GNUC__) && ( defined(i386) || defined(__i386) || defined(__i386__)  \
            || defined(i486) || defined(__i486) || defined (__i486__) \
            || defined(intel) || defined(x86) || defined(i86pc) )
    __asm__ __volatile__ ("rdtsc" : "=A"(value));
#else
# error "no high res clock defined"
#endif

you'll see the system expects an x86.  Are you on an x86-64?  If so you need to specify something like -m32 in the CFLAGS and/or supply a flag with te same semantics to configure.


HTH
Eliot


Rob



--------------------------------------------------
From: "Frank Shearar" <[hidden email]>
Sent: Thursday, July 15, 2010 8:30 AM
To: <[hidden email]>
Subject: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)





On 2010/07/14 23:29, Levente Uzonyi wrote:

On Wed, 14 Jul 2010, Frank Shearar wrote:

On 2010/07/13 23:04, Levente Uzonyi 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"

Are there any additional requirements like gcc version, for instance?

I ask because I get errors on the above instructions, on FreeBSD 6.4,
running gcc 3.4.6. I can attach configure's output and whatnot, if
you're interested.

If configure failed, then please attach the output and continue this
thread on the vm-dev list.

I didn't expect the instructions to work, since FreeBSD isn't Linux. So
having said that, I've attached the output from configure (which looks
fine, to my untrained eye) and the output from make install (which
generates errors).

That first error:

In file included from /usr/home/frank/temp/src/vm/gcc3x-cointerp.c:21:
/usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced
by <stdlib.h>"

is probably the culprit, I suppose?

frank



Levente


frank

Levente


Rob



________________________________
From: Levente Uzonyi <[hidden email]>
To: The general-purpose Squeak developers list
<[hidden email]>
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" <[hidden email]>
Sent: Tuesday, July 13, 2010 12:46 PM
To: "The general-purpose Squeak developers list"
<[hidden email]>
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" <[hidden email]>
Sent: Tuesday, July 13, 2010 11:29 AM
To: "The general-purpose Squeak developers list"
<[hidden email]>
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



















Reply | Threaded
Open this post in threaded view
|

Re: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Andreas.Raab
In reply to this post by Nicolas Cellier
 
On 7/15/2010 11:09 AM, Nicolas Cellier wrote:

> 2010/7/15 Randal L. Schwartz <[hidden email]
> <mailto:[hidden email]>>
>      >>>>> "Frank" == Frank Shearar <[hidden email]
>     <mailto:[hidden email]>> writes:
>
>     Frank> /usr/home/frank/temp/platforms/unix/vm/sqUnixHeartbeat.c:383:
>     error:
>     Frank> PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' undeclared here (not
>     in a function)
>
>     Frank> FreeBSD's pthread.h doesn't contain this #define. In fact,
>     nothing in
>     Frank> /usr/include does. I'll investigate further!
>
>     Ewww.  Why do people presume everything's Linux like that?
>
>
> Because Smalltalkers are happy to be immune to this kind of detail
> behind their vm?
> Because documentations about standards are not that cheap for unpaid people?
> Because there is not enough manpower and such community project has to
> work by gradual error/correction cycles rather than planned development?

[x] None of the above.

Correct answer: Because all of the servers at Teleplace run on RHEL 5.3
and that's the only thing we've tested Cog on. You should expect more
Linuxisms (and even RHELisms) as people try to compile run Cog on other
Unixens. That's the expected state at this stage of the project.

Cheers,
   - Andreas
Reply | Threaded
Open this post in threaded view
|

Re: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Eliot Miranda-2
In reply to this post by Frank Shearar
 
Hi Frank,

On Thu, Jul 15, 2010 at 6:18 AM, Frank Shearar <[hidden email]> wrote:

On 2010/07/15 14:30, Frank Shearar wrote:




On 2010/07/14 23:29, Levente Uzonyi wrote:

On Wed, 14 Jul 2010, Frank Shearar wrote:

On 2010/07/13 23:04, Levente Uzonyi 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"

Are there any additional requirements like gcc version, for instance?

I ask because I get errors on the above instructions, on FreeBSD 6.4,
running gcc 3.4.6. I can attach configure's output and whatnot, if
you're interested.

If configure failed, then please attach the output and continue this
thread on the vm-dev list.

I didn't expect the instructions to work, since FreeBSD isn't Linux. So
having said that, I've attached the output from configure (which looks
fine, to my untrained eye) and the output from make install (which
generates errors).

That first error:

In file included from /usr/home/frank/temp/src/vm/gcc3x-cointerp.c:21:
/usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced
by <stdlib.h>"

is probably the culprit, I suppose?

Yes, maybe I'll learn to hack a bit first. If I manually edit gcc3x-cointerp.c and replace malloc.h with stdlib.h, compilation does indeed proceed much further.

Then the code needs to read something like

StackInterpreter>>declareCVarsIn: aCCodeGenerator
aCCodeGenerator
addHeaderFile:'#if _MSC_VER\#  include <malloc.h> /* for alloca under MSVC */\#else\# include <stdlib.h>\#endif' withCRs;

Anyone with info on what's the right header file for alloca under MSVC versions please speak up.
 
Then it fails with this:

/usr/home/frank/temp/platforms/unix/vm/sqUnixHeartbeat.c:383: error: 'PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' undeclared here (not in a function)

FreeBSD's pthread.h doesn't contain this #define. In fact, nothing in /usr/include does. I'll investigate further!

So the code needs to read something like

#if defined(PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP)
# define THE_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
#else
# define THE_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
#endif
static pthread_mutex_t yield_sync = THE_MUTEX_INITIALIZER;
static pthread_mutex_t yield_mutex = THE_MUTEX_INITIALIZER;


It is only by trying to compile on various systems that we discover how they vary.  Its not a matter of using linuxisms or not.  Its a matter of wanting debuggability and only having linux and Mac OS X available.  Its all fixable.  Don't take it personally :)

HTH
Eliot

 

frank


frank



Levente


frank

Levente


Rob



________________________________
From: Levente Uzonyi <[hidden email]>
To: The general-purpose Squeak developers list
<[hidden email]>
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" <[hidden email]>
Sent: Tuesday, July 13, 2010 12:46 PM
To: "The general-purpose Squeak developers list"
<[hidden email]>
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" <[hidden email]>
Sent: Tuesday, July 13, 2010 11:29 AM
To: "The general-purpose Squeak developers list"
<[hidden email]>
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

















Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Levente Uzonyi-2
In reply to this post by Rob Withers
 
On Thu, 15 Jul 2010, Rob Withers wrote:

(Pine is unable to quote your mail...)

The question is: is your OS 32 or 64-bit? The CPU doesn't matter here. If
your OS is 64-bit then you'll probably need the gcc-multilibs package (or
equivalent for your platform) and as Eliot suggested the -m32 switch for
compilation and linking. To run the resulting VM, you'll need the
ia32-libs package (or equivalent for your platform), but you already have
that if you can run the prebuilt SqueakVM.


Levente
Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Eliot Miranda-2
 
Hi Levente,

    can you edit unixbuild/HowToBuild with this info?  Err on the expansive side and feel free to include a good URL if you know of one.

TIA

On Thu, Jul 15, 2010 at 12:38 PM, Levente Uzonyi <[hidden email]> wrote:

On Thu, 15 Jul 2010, Rob Withers wrote:

(Pine is unable to quote your mail...)

The question is: is your OS 32 or 64-bit? The CPU doesn't matter here. If your OS is 64-bit then you'll probably need the gcc-multilibs package (or equivalent for your platform) and as Eliot suggested the -m32 switch for compilation and linking. To run the resulting VM, you'll need the ia32-libs package (or equivalent for your platform), but you already have that if you can run the prebuilt SqueakVM.


Levente

Reply | Threaded
Open this post in threaded view
|

Re: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Nicolas Cellier
In reply to this post by Andreas.Raab
 
2010/7/15 Andreas Raab <[hidden email]>

On 7/15/2010 11:09 AM, Nicolas Cellier wrote:
2010/7/15 Randal L. Schwartz <[hidden email]
<mailto:[hidden email]>>

    >>>>> "Frank" == Frank Shearar <[hidden email]
   <mailto:[hidden email]>> writes:

   Frank> /usr/home/frank/temp/platforms/unix/vm/sqUnixHeartbeat.c:383:
   error:
   Frank> PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' undeclared here (not
   in a function)

   Frank> FreeBSD's pthread.h doesn't contain this #define. In fact,
   nothing in
   Frank> /usr/include does. I'll investigate further!

   Ewww.  Why do people presume everything's Linux like that?


Because Smalltalkers are happy to be immune to this kind of detail
behind their vm?
Because documentations about standards are not that cheap for unpaid people?
Because there is not enough manpower and such community project has to
work by gradual error/correction cycles rather than planned development?

[x] None of the above.

Correct answer: Because all of the servers at Teleplace run on RHEL 5.3 and that's the only thing we've tested Cog on. You should expect more Linuxisms (and even RHELisms) as people try to compile run Cog on other Unixens. That's the expected state at this stage of the project.

Cheers,
 - Andreas

Hehe, I was not speculating on Teleplace policy !
1) was a joke
2) was applicable for indivuduals rather than Teleplace
and 3) I was more an invitation to enhance the code by ourselves now that it is in our hands

Nicolas
Reply | Threaded
Open this post in threaded view
|

Re: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Andreas.Raab
 
On 7/15/2010 12:50 PM, Nicolas Cellier wrote:
> Hehe, I was not speculating on Teleplace policy !

I didn't think you were. But since people were effectively asking the
question about "gee, why doesn't this compile out of the box on all the
flavors that a regular Squeak VM compiles on" I thought it worthwhile to
point out what the reality of the current situation is and that people
should really expect these issues at this point. It's a normal part of
the process.

Cheers,
   - Andreas

> 1) was a joke
> 2) was applicable for indivuduals rather than Teleplace
> and 3) I was more an invitation to enhance the code by ourselves now
> that it is in our hands
>
> Nicolas
Reply | Threaded
Open this post in threaded view
|

Re: Cog on FreeBSD (Re: [Vm-dev] Re: [squeak-dev] Re: Cog on linux)

Randal L. Schwartz
 
>>>>> "Andreas" == Andreas Raab <[hidden email]> writes:

Andreas> I didn't think you were. But since people were effectively
Andreas> asking the question about "gee, why doesn't this compile out of
Andreas> the box on all the flavors that a regular Squeak VM compiles
Andreas> on" I thought it worthwhile to point out what the reality of
Andreas> the current situation is and that people should really expect
Andreas> these issues at this point. It's a normal part of the process.

I wasn't asking that directly.  Just more lamenting the fact that a
*lot* of software is written with the theory that "all the Unix world is
Linux", even though Linux is a tiny minority of Unix-like installations
out there.

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[hidden email]> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion
Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Rob Withers
In reply to this post by Levente Uzonyi-2
 
(I am having trouble quoting Eliot's email as well.  Plain text is best)

I finally figured out how to specify to configure to use -m32 on the CFLAGS
entries.  It is a part of the invocation of configure.

../../platforms/unix/config/configure
CFLAGS="-m32 -g -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1
 -DCOGMTVM=0" LIBS=-lpthread

I seem to have gotten past the problem with sqUnixHeartbeat.c and now I have
a new problem:

vm/vm.a(sqExternalSemaphores.o): In function `doSignalExternalSemaphores':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:198:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:213:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:184:
undefined reference to `sqLowLevelMFence'
vm/vm.a(sqExternalSemaphores.o): In function `signalSemaphoreWithIndex':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:130:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:131:
undefined reference to `sqAtomicAddConst'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:147:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:148:
undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:152:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:153:
undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:135:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:136:
undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:140:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:141:
undefined reference to `sqCompareAndSwap'
vm/vm.a(sqTicker.o): In function `checkHighPriorityTickees':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:211:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:217:
undefined reference to `sqCompareAndSwapRes'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:227:
undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `addHighPriorityTickee':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:185:
undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `ioSynchronousCheckForEvents':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:128:
undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `addHighPriorityTickee':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:193:
undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:193:
undefined reference to `sqLowLevelMFence'
collect2: ld returned 1 exit status
make: *** [squeak] Error 1

--------------------------------------------------
From: "Levente Uzonyi" <[hidden email]>
Sent: Thursday, July 15, 2010 3:38 PM
To: "Squeak Virtual Machine Development Discussion"
<[hidden email]>
Subject: Re: [Vm-dev] Cog on linux

>
> On Thu, 15 Jul 2010, Rob Withers wrote:
>
> (Pine is unable to quote your mail...)
>
> The question is: is your OS 32 or 64-bit? The CPU doesn't matter here. If
> your OS is 64-bit then you'll probably need the gcc-multilibs package (or
> equivalent for your platform) and as Eliot suggested the -m32 switch for
> compilation and linking. To run the resulting VM, you'll need the
> ia32-libs package (or equivalent for your platform), but you already have
> that if you can run the prebuilt SqueakVM.
>
>
> Levente

Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Eliot Miranda-2
 


On Thu, Jul 15, 2010 at 2:54 PM, Rob Withers <[hidden email]> wrote:

(I am having trouble quoting Eliot's email as well.  Plain text is best)

OK.

 

I finally figured out how to specify to configure to use -m32 on the CFLAGS entries.  It is a part of the invocation of configure.

../../platforms/unix/config/configure CFLAGS="-m32 -g -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0" LIBS=-lpthread

I seem to have gotten past the problem with sqUnixHeartbeat.c and now I have a new problem:

vm/vm.a(sqExternalSemaphores.o): In function `doSignalExternalSemaphores':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:198: undefined reference to `sqLowLevelMFence'

gcc -E -dM should print predefined macros.  e.g.

McStalker.oscogvm$ gcc -m32 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __i386 1
#define i386 1
#define __i386__ 1
#define __GNUC_PATCHLEVEL__ 1
#define __GNUC_MINOR__ 2
#define __GNUC_GNU_INLINE__ 1
McStalker.oscogvm$ gcc -m64 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __x86_64 1
#define __x86_64__ 1
#define __GNUC_PATCHLEVEL__ 1
#define __GNUC_MINOR__ 2
#define __GNUC_GNU_INLINE__ 1

You'll then see what names are given to define x86/IA32 on your system.  You can then edit the following incantation to include your configuration (and let me know what it is).

 #if defined(__GNUC__) && (defined(i386) || defined(__i386) || defined(__i386__) || defined(_X86_))

HTH
Eliot

/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:213: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:184: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqExternalSemaphores.o): In function `signalSemaphoreWithIndex':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:130: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:131: undefined reference to `sqAtomicAddConst'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:147: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:148: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:152: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:153: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:135: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:136: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:140: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:141: undefined reference to `sqCompareAndSwap'
vm/vm.a(sqTicker.o): In function `checkHighPriorityTickees':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:211: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:217: undefined reference to `sqCompareAndSwapRes'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:227: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `addHighPriorityTickee':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:185: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `ioSynchronousCheckForEvents':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:128: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `addHighPriorityTickee':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:193: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:193: undefined reference to `sqLowLevelMFence'
collect2: ld returned 1 exit status
make: *** [squeak] Error 1


--------------------------------------------------
From: "Levente Uzonyi" <[hidden email]>
Sent: Thursday, July 15, 2010 3:38 PM
To: "Squeak Virtual Machine Development Discussion" <[hidden email]>

Subject: Re: [Vm-dev] Cog on linux


On Thu, 15 Jul 2010, Rob Withers wrote:

(Pine is unable to quote your mail...)

The question is: is your OS 32 or 64-bit? The CPU doesn't matter here. If your OS is 64-bit then you'll probably need the gcc-multilibs package (or equivalent for your platform) and as Eliot suggested the -m32 switch for compilation and linking. To run the resulting VM, you'll need the ia32-libs package (or equivalent for your platform), but you already have that if you can run the prebuilt SqueakVM.


Levente


Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Rob Withers
 
I get the following:
 
[hidden email] [~/public_html/squeakelib/Cog]# gcc -m32 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC_PATCHLEVEL__ 2
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __i386 1
#define i386 1
#define __i386__ 1
#define __GNUC_RH_RELEASE__ 48
#define __GNUC_MINOR__ 1
#define __GNUC_GNU_INLINE__ 1
 
[hidden email] [~/public_html/squeakelib/Cog]# gcc -m64 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __x86_64 1
#define __GNUC_RH_RELEASE__ 48
#define __x86_64__ 1
#define __GNUC_PATCHLEVEL__ 2
#define __GNUC_MINOR__ 1
#define __GNUC_GNU_INLINE__ 1
It looks like I match the incantation, as both 32 and 64.  Not sure what to change.
 
Rob

Sent: Thursday, July 15, 2010 6:27 PM
Subject: Re: [Vm-dev] Cog on linux




On Thu, Jul 15, 2010 at 2:54 PM, Rob Withers <[hidden email]> wrote:

(I am having trouble quoting Eliot's email as well.  Plain text is best)

OK.

 

I finally figured out how to specify to configure to use -m32 on the CFLAGS entries.  It is a part of the invocation of configure.

../../platforms/unix/config/configure CFLAGS="-m32 -g -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0" LIBS=-lpthread

I seem to have gotten past the problem with sqUnixHeartbeat.c and now I have a new problem:

vm/vm.a(sqExternalSemaphores.o): In function `doSignalExternalSemaphores':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:198: undefined reference to `sqLowLevelMFence'

gcc -E -dM should print predefined macros.  e.g.

McStalker.oscogvm$ gcc -m32 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __i386 1
#define i386 1
#define __i386__ 1
#define __GNUC_PATCHLEVEL__ 1
#define __GNUC_MINOR__ 2
#define __GNUC_GNU_INLINE__ 1
McStalker.oscogvm$ gcc -m64 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __x86_64 1
#define __x86_64__ 1
#define __GNUC_PATCHLEVEL__ 1
#define __GNUC_MINOR__ 2
#define __GNUC_GNU_INLINE__ 1

You'll then see what names are given to define x86/IA32 on your system.  You can then edit the following incantation to include your configuration (and let me know what it is).

 #if defined(__GNUC__) && (defined(i386) || defined(__i386) || defined(__i386__) || defined(_X86_))

HTH
Eliot

/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:213: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:184: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqExternalSemaphores.o): In function `signalSemaphoreWithIndex':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:130: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:131: undefined reference to `sqAtomicAddConst'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:147: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:148: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:152: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:153: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:135: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:136: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:140: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:141: undefined reference to `sqCompareAndSwap'
vm/vm.a(sqTicker.o): In function `checkHighPriorityTickees':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:211: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:217: undefined reference to `sqCompareAndSwapRes'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:227: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `addHighPriorityTickee':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:185: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `ioSynchronousCheckForEvents':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:128: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `addHighPriorityTickee':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:193: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:193: undefined reference to `sqLowLevelMFence'
collect2: ld returned 1 exit status
make: *** [squeak] Error 1


--------------------------------------------------
From: "Levente Uzonyi" <[hidden email]>
Sent: Thursday, July 15, 2010 3:38 PM
To: "Squeak Virtual Machine Development Discussion" <[hidden email]>

Subject: Re: [Vm-dev] Cog on linux


On Thu, 15 Jul 2010, Rob Withers wrote:

(Pine is unable to quote your mail...)

The question is: is your OS 32 or 64-bit? The CPU doesn't matter here. If your OS is 64-bit then you'll probably need the gcc-multilibs package (or equivalent for your platform) and as Eliot suggested the -m32 switch for compilation and linking. To run the resulting VM, you'll need the ia32-libs package (or equivalent for your platform), but you already have that if you can run the prebuilt SqueakVM.


Levente


Reply | Threaded
Open this post in threaded view
|

Re: Cog on linux

Eliot Miranda-2
 


On Thu, Jul 15, 2010 at 4:49 PM, Rob Withers <[hidden email]> wrote:
 
I get the following:
 
[hidden email] [~/public_html/squeakelib/Cog]# gcc -m32 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC_PATCHLEVEL__ 2
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __i386 1
#define i386 1
#define __i386__ 1
#define __GNUC_RH_RELEASE__ 48
#define __GNUC_MINOR__ 1
#define __GNUC_GNU_INLINE__ 1
 
[hidden email] [~/public_html/squeakelib/Cog]# gcc -m64 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __x86_64 1
#define __GNUC_RH_RELEASE__ 48
#define __x86_64__ 1
#define __GNUC_PATCHLEVEL__ 2
#define __GNUC_MINOR__ 1
#define __GNUC_GNU_INLINE__ 1
It looks like I match the incantation, as both 32 and 64.  Not sure what to change.

You need to figure out why, when sqMemoryFence.h is included by sqExternalSemaphores.c and sqTicker.c, the following macro in sqMemoryFence.h is not being defined or not being expanded:

#if defined(__GNUC__) && (defined(i386) || defined(__i386) || defined(__i386__) || defined(_X86_))
# if defined(__MINGW32__) && !__SSE2__
    /* Andreas is fond of the gcc 2.95 MINGW but it lacks sse2 support */
#   define sqLowLevelMFence() asm volatile (".byte 0x0f;.byte 0xae;.byte 0xf0")
# else
#   define sqLowLevelMFence() asm volatile ("mfence")
# endif
#else
# if !defined(sqLowLevelMFence)
extern void sqLowLevelMFence(void);
# endif
#endif

i.e. from the above 
#   define sqLowLevelMFence() asm volatile ("mfence")
should be live and hence in sqExternalSemaphores.c and sqTicker.c sqLowLevelMFence() should expand to asm volatile ("mfence").

gcc -E or gcc -P will run the preprocessor, so run the make capturing the compile commands for these two and retry the command deleting -c thefile and adding -E.  Then look at the output and see what files are included (is sqMemoryFence.h being included?) and then if it is find out why, if as the -dM output above indicates, the macro isn't being defined given the above tests for both __GNUC__ and __i386__.

HTH
Eliot

 
Rob

Sent: Thursday, July 15, 2010 6:27 PM
Subject: Re: [Vm-dev] Cog on linux




On Thu, Jul 15, 2010 at 2:54 PM, Rob Withers <[hidden email]> wrote:

(I am having trouble quoting Eliot's email as well.  Plain text is best)

OK.

 

I finally figured out how to specify to configure to use -m32 on the CFLAGS entries.  It is a part of the invocation of configure.

../../platforms/unix/config/configure CFLAGS="-m32 -g -O2 -msse2 -D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0" LIBS=-lpthread

I seem to have gotten past the problem with sqUnixHeartbeat.c and now I have a new problem:

vm/vm.a(sqExternalSemaphores.o): In function `doSignalExternalSemaphores':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:198: undefined reference to `sqLowLevelMFence'

gcc -E -dM should print predefined macros.  e.g.

McStalker.oscogvm$ gcc -m32 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __i386 1
#define i386 1
#define __i386__ 1
#define __GNUC_PATCHLEVEL__ 1
#define __GNUC_MINOR__ 2
#define __GNUC_GNU_INLINE__ 1
McStalker.oscogvm$ gcc -m64 -E -dM platforms/Cross/vm/sqMemoryFence.h | egrep "86|GNUC"
#define __GNUC__ 4
#define __DBL_MAX__ 1.7976931348623157e+308
#define __x86_64 1
#define __x86_64__ 1
#define __GNUC_PATCHLEVEL__ 1
#define __GNUC_MINOR__ 2
#define __GNUC_GNU_INLINE__ 1

You'll then see what names are given to define x86/IA32 on your system.  You can then edit the following incantation to include your configuration (and let me know what it is).

 #if defined(__GNUC__) && (defined(i386) || defined(__i386) || defined(__i386__) || defined(_X86_))

HTH
Eliot

/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:213: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:184: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqExternalSemaphores.o): In function `signalSemaphoreWithIndex':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:130: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:131: undefined reference to `sqAtomicAddConst'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:147: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:148: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:152: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:153: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:135: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:136: undefined reference to `sqCompareAndSwap'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:140: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqExternalSemaphores.c:141: undefined reference to `sqCompareAndSwap'
vm/vm.a(sqTicker.o): In function `checkHighPriorityTickees':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:211: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:217: undefined reference to `sqCompareAndSwapRes'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:227: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `addHighPriorityTickee':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:185: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `ioSynchronousCheckForEvents':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:128: undefined reference to `sqLowLevelMFence'
vm/vm.a(sqTicker.o): In function `addHighPriorityTickee':
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:193: undefined reference to `sqLowLevelMFence'
/home1/vawhigso/public_html/squeakelib/Cog/platforms/Cross/vm/sqTicker.c:193: undefined reference to `sqLowLevelMFence'
collect2: ld returned 1 exit status
make: *** [squeak] Error 1


--------------------------------------------------
From: "Levente Uzonyi" <[hidden email]>
Sent: Thursday, July 15, 2010 3:38 PM
To: "Squeak Virtual Machine Development Discussion" <[hidden email]>

Subject: Re: [Vm-dev] Cog on linux


On Thu, 15 Jul 2010, Rob Withers wrote:

(Pine is unable to quote your mail...)

The question is: is your OS 32 or 64-bit? The CPU doesn't matter here. If your OS is 64-bit then you'll probably need the gcc-multilibs package (or equivalent for your platform) and as Eliot suggested the -m32 switch for compilation and linking. To run the resulting VM, you'll need the ia32-libs package (or equivalent for your platform), but you already have that if you can run the prebuilt SqueakVM.


Levente




123