[erlang-questions] open_port returns enoent even when driver init function executes correctly.

Jeffrey Rennie <>
Fri Jan 4 00:49:18 CET 2013


I tried with sasl, but it gives me no more info:

...

=PROGRESS REPORT==== 3-Jan-2013::15:48:34 ===

          supervisor: {local,sasl_sup}

             started: [{pid,<0.36.0>},

                       {name,release_handler},

                       {mfargs,{release_handler,start_link,[]}},

                       {restart_type,permanent},

                       {shutdown,2000},

                       {child_type,worker}]

 

=PROGRESS REPORT==== 3-Jan-2013::15:48:34 ===

         application: sasl

          started_at: 

 

=ERROR REPORT==== 3-Jan-2013::15:48:35 ===

Error in process <0.40.0> with exit value: {enoent,[{erlang,open_port,[{spawn,"example_drv"},[]],[]},{complex5,init,1,[{file,"c:/Users/jeff/code/code/port_driver/complex5.erl"},{line,19}]}]}

 

From: Robert Raschke [mailto:] 
Sent: Thursday, January 03, 2013 12:37 AM
To: SurferJeff
Cc: ; 
Subject: Re: [erlang-questions] open_port returns enoent even when driver init function executes correctly.

 

You can try running erl.exe with sasl enabled to get better error messages.

The messages you see at the moment are coming out interleaved, like in the old joke "When faced with a problem you decide to use threading, ..."  :-)

Robby

On Jan 3, 2013 4:53 AM, "SurferJeff" <> wrote:

I found the recipe to build debug:

$ cd $ERL_TOP
$ rm bin/win32/erlexec.dll
$ cd erts/emulator
$ make debug
$ cd ../etc
$ make debug

 

And it succeeded.  However, the next command in the recipe fails:

 <mailto:>  /cygdrive/c/Users/jeff/GitHub/otp
$ make local_setup
make[1]: Entering directory `/cygdrive/c/Users/jeff/GitHub/otp/erts'
make[2]: Entering directory `/cygdrive/c/Users/jeff/GitHub/otp/erts/start_script
s'
make[2]: Nothing to be done for `debug'.
make[2]: Leaving directory `/cygdrive/c/Users/jeff/GitHub/otp/erts/start_scripts
'
ct_run.exe dialyzer.exe erl.ini erl_crash.dump escript.exe run_test.exe typer.ex
e werl.exe win32
make[2]: Entering directory `/cygdrive/c/Users/jeff/GitHub/otp/erts/start_script
s'
/usr/bin/install -c -d /cygdrive/c/users/jeff/github/otp/erts/start_scripts/tmp
( cd /cygdrive/c/users/jeff/github/otp/erts/start_scripts/tmp && \
  erlc -W  -I/cygdrive/c/users/jeff/github/otp/lib/kernel/ebin -I/cygdrive/c/use
rs/jeff/github/otp/lib/stdlib/ebin -I/cygdrive/c/users/jeff/github/otp/lib/sasl/
ebin +no_warn_sasl +otp_build -o /cygdrive/c/users/jeff/github/otp/bin/start.scr
ipt /cygdrive/c/users/jeff/github/otp/erts/start_scripts/start_clean.rel )
File not found: "c:/cygdrive/c/users/jeff/github/otp/erts/start_scripts/start_cl
ean.rel"
Makefile:129: recipe for target `/cygdrive/c/users/jeff/github/otp/bin/start.scr
ipt' failed
make[2]: *** [/cygdrive/c/users/jeff/github/otp/bin/start.script] Error 1
make[2]: Leaving directory `/cygdrive/c/Users/jeff/GitHub/otp/erts/start_scripts
'
Makefile:69: recipe for target `local_setup' failed
make[1]: *** [local_setup] Error 2
make[1]: Leaving directory `/cygdrive/c/Users/jeff/GitHub/otp/erts'
Makefile:883: recipe for target `local_setup' failed
make: *** [local_setup] Error 2

 

 

And now my erl.exe is completely hosed:

 <mailto:>  /cygdrive/c/Users/jeff/GitHub/otp/bin/win32
$ ./erl.exe
{(no error logger present"i)n ietr rtoerr: m"iEnrartoirn gi ni np rdooc_ebsoost
"<,0{.b2a.d0a>r wgi,t[h{ eerxli_tp rviaml_uleo:a d{ebra,dcahregc,k[_{feirlle__pr
reismu_llto,a3d,e[r{,fcihleec,k"_efrill_ep_rriems_ullota,d3er,[.{efrill"e},,\{"l
eirnle_,p28r3i}m]_}l,o{aidneirt.,egrelt\_"b}o,o{tl,i1n,e[,{2f8i3l}e,]"}i,n{iitn.
ite,rgle"t},_{bloionte,,178,5[}{]f}i,l{ei,n\i"ti,ngiett._ebrolo\t",}2,,{[l{ifnie
l,e7,8"5i}n]i}t,.{eirnli"t},,g{elti_nbeo,o77t2,}2]},,[{{ifniilte,,d\o"_ibnoiott.
,e3r,l[\{"f}i,l{el,i"nien,i7t7.2e}r]l}",}{,i{nliitn,ed,o73_9b}o]o}t],}3},
[{file,\"init.erl\"},{line,739}]}]}\n"

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()

 


On Wednesday, January 2, 2013 7:26:09 PM UTC-8, SurferJeff wrote:

I'm working through the example here: 
http://www.erlang.org/doc/tutorial/c_portdriver.html 
And I'm trying to get it to run on Windows.  I reordered the code in the C 
source so that it compiles, and added a module.def file so that erlang 
actually finds and executes the driver init function. 

I attached a debugger.  Walking back up the stack, I observe that: 
The driver init function returns correctly. 
erts_sys_ddll_call_init() returns correctly. 
do_load_driver_entry() returns ERL_DE_NO_ERROR. 
load_driver_entry() returns ERL_DE_NO_ERROR. 
erl_ddll_try_load_3 returns t = TUPLE2(hp, am_ok, ok_term); on line 417 of 
erl_bif_ddl.c. 
But the next higher call on the stack is _process_main(), which was compiled 
with gcc and has no debug symbols so I can't step through and figure out why 
the end result is: 

=ERROR REPORT==== 2-Jan-2013::19:14:22 === 
Error in process <0.31.0> with exit value: 
{enoent,[{erlang,open_port,[{spawn,"example_drv"},[]],[]},{complex5,init,1,[ 
{file,"c:/Users/jeff/code/code/port_driver/complex5.erl"},{line,19}]}]} 

Has anyone seen this before? 

If not, how do I recompile erl.exe purely with cl.exe (no gcc) so that it 
generates debug symbols?  And while I'm recompiling, how do I turn off all 
optimizations?  I can read basic make files, but I get lost in the configure 
scripts and .in and .mk files.  Please take pity on a Windows programmer ;-) 


_______________________________________________ 
erlang-questions mailing list 
 
http://erlang.org/mailman/listinfo/erlang-questions 


_______________________________________________
erlang-questions mailing list

http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130103/1640d9a7/attachment.html>


More information about the erlang-questions mailing list