Release Handling is broken or jost for me #64

Closed
ruslander opened this Issue Feb 4, 2013 · 9 comments

Comments

Projects
None yet
9 participants

I followed the tutorial few times but I still get the same result. I would like to know what I'm doing wrong and contribute to make the documentation more clear.

At the end when do start and attach then I get "Node is not running!".

Trying to run in the console I get following

root@nautilus:~/poligon/exemplar/rel# exemplar/bin/exemplar console
Exec: /root/poligon/exemplar/rel/exemplar/erts-5.9.1/bin/erlexec -boot /root/poligon/exemplar/rel/exemplar/releases/1/exemplar -mode embedded -config /root/poligon/exemplar/rel/exemplar/releases/1/sys.config -args_file /root/poligon/exemplar/rel/exemplar/releases/1/vm.args -- console
Root: /root/poligon/exemplar/rel/exemplar
{"init terminating in do_boot",{'cannot load',hipe,get_file}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
root@nautilus:~/poligon/exemplar/rel# erl
Erlang R15B01 (erts-5.9.1) [source] [async-threads:0] [kernel-poll:false]

Eshell V5.9.1  (abort with ^G)

If you need more details please don't hesitate to ask me

Contributor

nevar commented Feb 5, 2013

Hi @ruslander.

How you created release?
Did you created node from rebar template?
Do you made any change in reltool.config? What app did you include?
What version of rebar you use?

Contributor

shino commented Feb 5, 2013

Your Erlang/OTP installation probably does not configured with hipe support.

Don't include hipe application in release by
{app, hipe, [{incl_cond, exclude}]}

cf. http://stackoverflow.com/questions/7324556/cannot-start-sample-erlang-release-generated-with-rebar

okeuday commented Mar 29, 2013

when using the wiki with R16B, i get:

$ ./rebar compile generate
==> rel (compile)
==> exemplar (compile)
Compiled src/exemplar_app.erl
Compiled src/exemplar_sup.erl
==> rel (generate)
ERROR: generate failed while processing .../exemplar/rel: {'EXIT',{{badmatch,{error,"exemplar: : Missing application directory."}},
         [{rebar_reltool,generate,2,
                         [{file,"src/rebar_reltool.erl"},{line,53}]},
          {rebar_core,run_modules,4,[{file,"src/rebar_core.erl"},{line,434}]},
          {rebar_core,execute,5,[{file,"src/rebar_core.erl"},{line,363}]},
          {rebar_core,process_dir1,6,[{file,"src/rebar_core.erl"},{line,227}]},
          {rebar_core,process_each,5,[{file,"src/rebar_core.erl"},{line,297}]},
          {rebar_core,process_dir1,6,[{file,"src/rebar_core.erl"},{line,203}]},
          {rebar_core,process_commands,2,
                      [{file,"src/rebar_core.erl"},{line,90}]},
          {rebar,main,1,[{file,"src/rebar.erl"},{line,58}]}]}}

Hi,

I have a similar problem here, but it doesn't seem like it's related with hipe.

If I start the application with console, it starts ok, I can see the app running with application:which_applications(). If I try starting the application again, it fails since the nodename is in use.

But still I can't use getpid and I can't attach since it can't find the pid. When using attach it returns:

:none: internal error in v3_life;
....omitted center....
escript: There were compilation errors.
Node is not running!

I had it with erlang r15b03 and now with r16b too. I followed the steps described in https://github.com/rebar/rebar/wiki/Release-handling for releases after R15B01.

My current configuration is

  • Osx 10.8.3
  • erlang R16B
  • rebar 2.1.0-pre R16B 20130405_133623 git 2.1.0-pre-64-g720d71e
Contributor

tuncer commented Apr 6, 2013

@okeuday and @burhanyasar, the errors you reported are unrelated to @ruslander's.

@okeuday, I haven't been able to reproduce the "Missing application directory" error with R14B04, R15B01, or R16B following the steps in https://github.com/rebar/rebar/wiki/Release-handling. Let's track this in a separate ticket, if it still fails. Also, a demo project might help.

@burhanyasar, thanks for the report, looks like escript failed to compile nodetool because lib/compiler-VSN/ebin/v3_life.beam wasn't included in the release. #43 or #80 should fix this. Alternatively you can add the following line in reltool.config:

{app, compiler, [{mod_cond, app}]},

Also see http://erlang.org/pipermail/erlang-questions/2013-April/073185.html

Contributor

tuncer commented Apr 6, 2013

@ruslander did @shino's comment resolve the issue?

Hey @tuncer, I experienced a similar issue running "rel/myapp/bin/myapp ping". Relevant output:

https://gist.github.com/thomaslee/6d6924b4437ee5f7cc04

This is on R15B03 + hipe. No issues with my "rebar compile generate", nor with actually starting the node. Stopping the node failed due to the busted "ping" call.

Your suggestion to change reltool.config to include add {app, compiler, ...} fixed the issue for me. (Huge thanks!)

I'm an Erlang newbie, so it's not clear to me if these issues are exactly the same -- thought it might be helpful to weigh in. Happy to raise another issue if that makes sense.

If you get a chance, any possibility you could explain to me (like I'm a five year old) why the {app, compiler, ...} line fixes this?

Contributor

tuncer commented Apr 7, 2013

@thomaslee, the current default simplenode.reltool.config template overrides the default sys-level mod_cond to avoid pulling in unused applications. Unfortunately that seems to cause v3_life.beam (part of the compiler application) to be omitted. v3_life is a vital module used in the Erlang compiler's core passes. Basically, you would get the same crash if you deleted /usr/local/lib/erlang/lib/compiler-VSN/ebin/v3_life.beam and tried to compile a random Erlang file.

So, if you explicitly add {app, compiler, [{mod_cond, app}]}, you're asking reltool to include all lib/compiler modules based on the list in lib/compiler/compiler.app.

https://gist.github.com/thomaslee/6d6924b4437ee5f7cc04 means the Erlang compiler failed to call v3_life:module/2 because v3_life.beam cannot be found ("v3_life:module/2 undefined") in /Users/tom/Source/coil/rel/coil/lib. Keep in mind that this only happens when the nodetool escript is invoked because -mode(compile) tells escript to compile the script before executing it. That directive isn't important for nodetool at all and removed by #80.

Relevant docs: reltool, LYSE, and escript.

Please let me know if something's unclear.

@tsloughter tsloughter closed this Jun 15, 2014

Contributor

ferd commented Jun 15, 2014

Hi, this issue was closed in an attempt to do quick basic filtering, with the benediction of rebar project owners. These issues and pull requests are not issues or code we're spitting on, but given the burden of the task and how much code rot may have happened since these were open is unknown from maintainers at this time. All tickets prior to March 2014 were closed and will be reopened on a per-request basis if we see interest from the reporter or contributor, or if some of the issues reported are still valid after the various patches that have made it since they were opened.

This is a fairly brutal first step to help us get a proper understanding of what is still valid or not, but that has been proven efficient in the past. Sorry for the inconvenience, things should go smoother from there on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment