We attempted to upgrade our production server to R140B4 which we built
from source on the server but had to bad out due to a serious failure.
The server is running CentOS with a kernel version 2.6.18-238.12.1.el5.
We did a basic .configure/make/make install like we have done every time
in the past, but this time, when we tried to bring the application up,
we got the following error condition:
20:55:02.946 [error] web request failed", method: 'GET', path: "ping",
type: error, what: undef, trace:
[{httpd_util,'rfc1123_date',[]},{mochiweb_request,server_headers,1},{mochiweb_request,start_response,2},{mochiweb_request,respond,2},{herd_web,loop,2},{mochiweb_http,headers,5},{proc_lib,init_p_do_apply,3}],
request:
{mochiweb_request,#Port<0.6428>,'GET',"/ping",{1,1},{12,{"host",{'Host',"herdmobile.dyndns.org:8080"},{"accept-encoding",{'Accept-Encoding',"gzip"},{"accept-charset",{'Accept-Charset',"utf-8,
iso-8859-1, utf-16,
*;q=0.7"},{"accept",{'Accept',"application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"},nil,nil},nil},{"accept-language",{'Accept-Language',"en-US"},nil,{"connection",{'Connection',"keep-alive"},{"bandwidth",{"Bandwidth","3100000"},nil,nil},nil}}},{"x-wap-profile",{"X-Wap-Profile","http://device.sprintpcs.com/HTC/APA9292KT/4536511.rdf"},{"x-network-type",{"X-Network-Type","EVDO"},{"referer",{'Referer',"http://herdmobile.dyndns.org:8080/ping"},{"keep-alive",{'Keep-Alive',"115"},nil,nil},{"user-agent",{'User-Agent',"Mozilla/5.0
(Linux; U; Android 2.3.3; en-us; Sprint APA9292KT Build/GRI40)
AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile
Safari/533.1"},nil,nil}},nil},nil}}}}
20:55:02.960 [error] Loading of
/usr/local/lib/erlang/lib/inets-5.8/ebin/httpd_util.beam failed: badfile
20:55:02.970 [error] CRASH REPORT Process <0.138.0> with 0 neighbours
crashed with reason: undef
20:55:02.982 [error] beam/beam_load.c(1365): Error loading module
httpd_util:^M
use of opcode 153; this emulator supports only up to 152^M
Any help would be appreciated, we need to upgrade as we are suffering
the SSL cache delete bug
(http://erlang.org/pipermail/erlang-bugs/2011-June/002484.html) that the
readme for R140B4 says has been fixed.
Many thanks,
Bryan
_______________________________________________
erlang-questions mailing list
erlang-q...@erlang.org
http://erlang.org/mailman/listinfo/erlang-questions
Try recompiling your source with the R14B04 compiler (or in general, whatever you're targeting). That's the only solution to this I know, though I had this problem some time ago. Maybe there are better ways now.
Here's a question for OTP: shouldn't these sorts of VM-level versioning issues be detected and reported more straightforwardly? I'd prefer a root cause + what to do.
Something like, "foo.beam was compiled for vm-isa-10.0 but VM requires incompatible vm-isa-14.4. To fix this, recompile from source."
Perhaps even better: rewrite the beam files to the new instruction set en masse and/or individually at load time.
Best,
Thomas
>________________________________
>From: Bryan Hughes <br...@wobblesoft.com>
>To: Erlang <erlang-q...@erlang.org>
>Sent: Sunday, October 30, 2011 5:10 AM
>Subject: [erlang-questions] use of opcode 153; this emulator supports only up to 152 after upgrading to R140B4
This is strange.
This kind of error message generally means that you have attempted
to load a BEAM into an older run-time system than it was compiled
for.
Opcode 153 is the new 'line' instruction introduced in the R15 release
(to support line numbers in exceptions), but R15 has not been released
yet. The support for line numbers in exception is included in the 'master'
branch in our git repository, though. Did you happen to build any BEAM
files with a BEAM compiler compiled from the master branch?
--
Björn Gustavsson, Erlang/OTP, Ericsson AB
I can do something like this:
=ERROR REPORT==== 31-Oct-2011::09:53:31 ===
beam/beam_load.c(1582): Error loading module t:
This BEAM file was compiled for a later version of the run-time
system than R15A.
To fix this, please recompile this module with an R15A compiler.
(Use of opcode 154; this emulator supports only up to 153.)
--
Björn Gustavsson, Erlang/OTP, Ericsson AB
Thanks for the information - this was indeed the issue. It looks like
one of our developers was testing out R15 and accidentally introduced a
beam file in to the packaged release in a top level directory that
masked the beam that was generated by the build. Unfortunately we had
never experience the error condition and rather cryptic message and was
off in the wrong direction trying to solve what was at issue.
Your previous response about making the exception message a bit more
informative would have tipped us off immediately.
=ERROR REPORT==== 31-Oct-2011::09:53:31 ===
beam/beam_load.c(1582): Error loading module t:
This BEAM file was compiled for a later version of the run-time
system than R15A.
To fix this, please recompile this module with an R15A compiler.
(Use of opcode 154; this emulator supports only up to 153.)
Thanks again for all the help and responses. Very much appreciated!
Erlang continues to ROCK!
Cheers,
Bryan
On 10/31/11 1:19 AM, Björn Gustavsson wrote:
> On Sun, Oct 30, 2011 at 5:10 AM, Bryan Hughes<br...@wobblesoft.com> wrote:
>> 20:55:02.982 [error] beam/beam_load.c(1365): Error loading module
>> httpd_util:^M
>> use of opcode 153; this emulator supports only up to 152^M
>>
> This is strange.
>
> This kind of error message generally means that you have attempted
> to load a BEAM into an older run-time system than it was compiled
> for.
>
> Opcode 153 is the new 'line' instruction introduced in the R15 release
> (to support line numbers in exceptions), but R15 has not been released
> yet. The support for line numbers in exception is included in the 'master'
> branch in our git repository, though. Did you happen to build any BEAM
> files with a BEAM compiler compiled from the master branch?
>