Hi Frank,<br><br><div class="gmail_quote">On Thu, Jul 15, 2010 at 6:18 AM, Frank Shearar <span dir="ltr">&lt;<a href="mailto:frank.shearar@angband.za.org">frank.shearar@angband.za.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
On 2010/07/15 14:30, Frank Shearar wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
<br>
<br>
On 2010/07/14 23:29, Levente Uzonyi wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
On Wed, 14 Jul 2010, Frank Shearar wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 2010/07/13 23:04, Levente Uzonyi wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Tue, 13 Jul 2010, Rob Withers wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks Levente. Unfortunately it did not work:<br>
<br>
./lib/squeak/3.9-7/squeak: /lib/libc.so.6: version `GLIBC_2.11&#39; not<br>
found (required by ./lib/squeak/3.9-7/squeak)<br>
</blockquote>
<br>
Seems like you have to build it yourself. Fortunately it&#39;s very easy,<br>
since Eliot commits the generated sources to the svn repo. So you can<br>
build a CogVM/StackVM without VMMaker. Here is how:<br>
<br>
&quot;How to build the Cog Croquet VM on Unix<br>
-------------------------------<br>
1. Install the tools (gcc, X11-devel, etc (e.g. libpng, libX11 &amp; libxt<br>
source))<br>
2. Check out the following sources from svn (if you haven&#39;t already<br>
- if<br>
you&#39;re<br>
reading this in unixbuild its likely you&#39;ve already got the sources)<br>
svn co <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/platforms" target="_blank">http://www.squeakvm.org/svn/squeak/branches/Cog/platforms</a><br>
svn co <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/src" target="_blank">http://www.squeakvm.org/svn/squeak/branches/Cog/src</a><br>
svn co <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/unixbuild" target="_blank">http://www.squeakvm.org/svn/squeak/branches/Cog/unixbuild</a><br>
3. Open a shell, cd into the unixbuild/bld directory and execute<br>
../../platforms/unix/config/configure CFLAGS=&quot;-g -O2 -msse2<br>
-D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1<br>
-DCOGMTVM=0&quot; LIBS=-lpthread<br>
make install prefix=WhereYouWantTheVmToGo<br>
4. At the end of it you&#39;ll get a new VM in the path provided via<br>
-prefix&quot;<br>
</blockquote>
<br>
Are there any additional requirements like gcc version, for instance?<br>
<br>
I ask because I get errors on the above instructions, on FreeBSD 6.4,<br>
running gcc 3.4.6. I can attach configure&#39;s output and whatnot, if<br>
you&#39;re interested.<br>
</blockquote>
<br>
If configure failed, then please attach the output and continue this<br>
thread on the vm-dev list.<br>
</blockquote>
<br>
I didn&#39;t expect the instructions to work, since FreeBSD isn&#39;t Linux. So<br>
having said that, I&#39;ve attached the output from configure (which looks<br>
fine, to my untrained eye) and the output from make install (which<br>
generates errors).<br>
<br>
That first error:<br>
<br>
In file included from /usr/home/frank/temp/src/vm/gcc3x-cointerp.c:21:<br>
/usr/include/malloc.h:3:2: error: #error &quot;&lt;malloc.h&gt; has been replaced<br>
by &lt;stdlib.h&gt;&quot;<br>
<br>
is probably the culprit, I suppose?<br>
</blockquote>
<br>
Yes, maybe I&#39;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. </blockquote><div><br></div><div>Then the code needs to read something like</div>
<div><br></div><div><div>StackInterpreter&gt;&gt;declareCVarsIn: aCCodeGenerator</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>aCCodeGenerator</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>addHeaderFile:&#39;#if _MSC_VER\#  include &lt;malloc.h&gt; /* for alloca under MSVC */\#else\# include &lt;stdlib.h&gt;\#endif&#39; withCRs;</div>
</div><div><br></div><div>Anyone with info on what&#39;s the right header file for alloca under MSVC versions please speak up.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Then it fails with this:<br>
<br>
/usr/home/frank/temp/platforms/unix/vm/sqUnixHeartbeat.c:383: error: &#39;PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP&#39; undeclared here (not in a function)<br>
<br>
FreeBSD&#39;s pthread.h doesn&#39;t contain this #define. In fact, nothing in /usr/include does. I&#39;ll investigate further!<br></blockquote><div><br></div><div>So the code needs to read something like</div><div><br></div>
<div>#if defined(PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP)</div><div># define THE_MUTEX_INITIALIZER PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP</div><div>#else</div><div># define THE_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER</div>
<div>#endif</div><div><div>static pthread_mutex_t yield_sync = THE_MUTEX_INITIALIZER;</div><div>static pthread_mutex_t yield_mutex = THE_MUTEX_INITIALIZER;</div></div><div><br></div><div><br></div><div>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&#39;t take it personally :)</div>
<div><br></div><div>HTH</div><div>Eliot</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
frank<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
frank<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
Levente<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
frank<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Levente<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Rob<br>
<br>
<br>
<br>
________________________________<br>
From: Levente Uzonyi &lt;<a href="mailto:leves@elte.hu" target="_blank">leves@elte.hu</a>&gt;<br>
To: The general-purpose Squeak developers list<br>
&lt;<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev@lists.squeakfoundation.org</a>&gt;<br>
Sent: Tue, July 13, 2010 3:21:43 PM<br>
Subject: Re: Cog on linux (was: Re: [squeak-dev] Re: UI lockup in<br>
Squeak 4.1)<br>
<br>
On Tue, 13 Jul 2010, Rob Withers wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
--------------------------------------------------<br>
From: &quot;Levente Uzonyi&quot; &lt;<a href="mailto:leves@elte.hu" target="_blank">leves@elte.hu</a>&gt;<br>
Sent: Tuesday, July 13, 2010 12:46 PM<br>
To: &quot;The general-purpose Squeak developers list&quot;<br>
&lt;<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev@lists.squeakfoundation.org</a>&gt;<br>
Subject: Cog on linux (was: Re: [squeak-dev] Re: UI lockup in Squeak<br>
4.1)<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Tue, 13 Jul 2010, Rob Withers wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
--------------------------------------------------<br>
From: &quot;Andreas Raab&quot; &lt;<a href="mailto:andreas.raab@gmx.de" target="_blank">andreas.raab@gmx.de</a>&gt;<br>
Sent: Tuesday, July 13, 2010 11:29 AM<br>
To: &quot;The general-purpose Squeak developers list&quot;<br>
&lt;<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank">squeak-dev@lists.squeakfoundation.org</a>&gt;<br>
Subject: [squeak-dev] Re: UI lockup in Squeak 4.1<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 7/13/2010 6:39 AM, Rob Withers wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The low-space watcher is running, at least before the problem<br>
starts. I<br>
do eventually run out of memory, but the uninterruptable state<br>
happens<br>
before this.<br>
</blockquote>
<br>
In which case you want to do the following:<br>
* Launch your app and wait until it&#39;s in the &quot;growing state&quot;<br>
* Hit F2 and from the VM&#39;s preference menu choose &quot;Debug&quot; and then<br>
&quot;Print all processes&quot;<br>
<br>
This will dump a list of all the call stacks of all processes. One<br>
of them is the culprit consuming memory and you&#39;ll probably be<br>
able to tell quickly from just looking at it (if not, you can<br>
email the output here but it typically takes a domain expert to<br>
understand what&#39;s going wrong).<br>
<br>
</blockquote>
<br>
Thanks for this pointer, Andreas.<br>
<br>
This time it was a Cog VM which spasmed, which I use for my client<br>
(Squeak 4.1 for server for use with linux vm - I have no ability to<br>
compile a linux Cog vm: would love if someone posted one that could<br>
be launched headless for my webhost).<br>
</blockquote>
<br>
Cog works, but i think you&#39;re trying to use the -headless switch,<br>
which (is deprecated) and tells the vm to use the X11 display, but<br>
with no window. Servers usually don&#39;t have X11, so it won&#39;t work.<br>
You better use -vm-display-null (and -vm-sound-null). Try squeak<br>
--help for further useful options (like tuning Cog).<br>
<br>
</blockquote>
<br>
I am trying to use the -headless switch. Good to know it is<br>
deprecated. So you happen to have a Cog for linux binary (version 17<br>
- 20), which I could use?<br>
</blockquote>
<br>
I have one, but I&#39;m not sure it will work on your server. You can find<br>
it here: <a href="http://leves.web.elte.hu/squeak/cog17.tar.gz" target="_blank">http://leves.web.elte.hu/squeak/cog17.tar.gz</a> . It&#39;s built on<br>
ubuntu 10.04 and is optimized for core2.<br>
<br>
<br>
Levente<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
Rob<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Levente<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
It started running at 100% and I did your F2 -&gt; Debug Options -&gt;<br>
Print all processes. It started dumping a LOT to the Debug Console,<br>
then it froze, still at 100%, but no increase in memory now and it<br>
went (Not Responding) and greyed out the window.<br>
<br>
Luckily, I was able to see enough of the stack that was causing<br>
problems. It is infinitely looping in this method:<br>
<br>
LanguageEnvironment class&gt;&gt;#localeID: localeID<br>
^self knownEnvironments at: localeID ifAbsent: [self localeID:<br>
(LocaleID isoLanguage: &#39;en&#39;)]<br>
<br>
This has nothing to do with my code, except I must be calling<br>
something that enters this loop. It happens in both Cog (Windows)<br>
and Squeak4.1 (Linux &lt;headless&gt; and Windows).<br>
<br>
Not sure how to fix this.<br>
<br>
Rob<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Cheers,<br>
- Andreas<br>
<br>
</blockquote>
<br>
<br>
</blockquote>
<br>
</blockquote>
<br>
<br>
</blockquote></blockquote>
<br>
<br>
<br>
</blockquote>
<br>
<br>
<br>
</blockquote>
<br>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote></div><br>