Snow Leopard Erlang woes (and the fix!)
12 October 2009
After upgrading to Snow Leopard, I found my os_mon erlang application exploded in a very ugly error message.
=CRASH REPORT==== 12-Oct-2009::23:29:20 ===
crasher:
initial call: memsup:init/1
pid: <0.76.0>
registered_name: memsup
exception exit: },
[{memsup,get_memory_usage,1},
{memsup,'-handle_info/2-fun-0-',2}]}
in function gen_server:terminate/6
ancestors: [os_mon_sup,<0.46.0>]
messages: []
links: [<0.47.0>]
dictionary: []
trap_exit: true
status: running
heap_size: 233
stack_size: 24
reductions: 172
neighbours:
After some investigation, it turns out that Snow Leopard changed their output on vm_stat, the tool to look at the memory available on the system. The new output added the line:
Pages speculative: 42219.
Where the erlang module memsup depends upon that not being there. The erlang developers get the ugliness. In any case, the patch looks like:
--- a/lib/os_mon/src/memsup.erl
+++ b/lib/os_mon/src/memsup.erl
@@ -728,8 +728,12 @@ get_memory_usage({unix,darwin}) ->
io_lib:fread("Pages active:~d.", skip_to_eol(Str2)),
{ok, [Inactive],Str4} =
io_lib:fread("Pages inactive:~d.", skip_to_eol(Str3)),
+ {ok, _,Str5} =
+ io_lib:fread("Pages speculative:~d.", skip_to_eol(Str4)),
{ok, [Wired],_} =
- io_lib:fread("Pages wired down:~d.", skip_to_eol(Str4)),
+ io_lib:fread("Pages wired down:~d.", skip_to_eol(Str5)),
+ % {ok, [Wired],_} =
+ % io_lib:fread("Pages wired down:~d.", skip_to_eol(Str4)),
NMemUsed = (Wired + Active + Inactive) * 4000,
NMemTotal = NMemUsed + Free * 4000,
{NMemUsed,NMemTotal};
Save this to a file, such as /tmp/erlang_patch. Full instructions for upgrading your erlang:
git clone git://github.com/mfoemmel/erlang-otp.git
cd erlang-otp
patch -l -i /tmp/erlang_patch -p1
./configure --prefix=/opt/erlang --enable-hipe
make
make install
export PATH=/opt/erlang/bin:$PATH
After that, you should be able to start os_mon:
erl
1> application:start(sasl).
2> application:start(os_mon).
If it starts, you’re done!
Hope this helps.
Fixed typo, thanks to Craig Krigsman
Comments
blog comments powered by Disqus