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: {{badmatch,{error,{fread,input}}}, [{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
- October 12, 2009
- By: ari
- Posted in: Uncategorized
- 0 Comments




