[erlang-questions] use of opcode 153; this emulator supports only up to 152 after upgrading to R140B4

814 views
Skip to first unread message

Bryan Hughes

unread,
Oct 30, 2011, 12:10:31 AM10/30/11
to Erlang
Hi,

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

Thomas Lindgren

unread,
Oct 30, 2011, 3:51:48 AM10/30/11
to Bryan Hughes, erlang-questions
Bryan,

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

Bryan Hughes

unread,
Oct 30, 2011, 6:17:15 PM10/30/11
to Thomas Lindgren, erlang-questions
Hi Thomas,

I believe we originally did what you are describing.  Here are the steps we took:
  1. Download src into new directory
  2. ./configure
  3. make (OTP directory)
  4. bring down our server
  5. make install (OTP directory)

  6. make clean (our source)
  7. make
  8. run server
Cheers,
Bryan

Björn Gustavsson

unread,
Oct 31, 2011, 4:19:45 AM10/31/11
to Bryan Hughes, Erlang
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?

--
Björn Gustavsson, Erlang/OTP, Ericsson AB

Björn Gustavsson

unread,
Oct 31, 2011, 9:00:02 AM10/31/11
to Thomas Lindgren, erlang-questions
On Sun, Oct 30, 2011 at 8:51 AM, Thomas Lindgren
<thomasl...@yahoo.com> wrote:
> 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."

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

Bryan Hughes

unread,
Nov 1, 2011, 2:22:52 PM11/1/11
to Björn Gustavsson, Erlang
Hi Björn,

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?
>

Reply all
Reply to author
Forward
0 new messages