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

SurferJeff <>
Thu Jan 3 05:53:30 CET 2013

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:
$ make local_setup
make[1]: Entering directory `/cygdrive/c/Users/jeff/GitHub/otp/erts'
make[2]: Entering directory 
make[2]: Nothing to be done for `debug'.
make[2]: Leaving directory 
ct_run.exe dialyzer.exe erl.ini erl_crash.dump escript.exe run_test.exe 
e werl.exe win32
make[2]: Entering directory 
/usr/bin/install -c -d 
( cd /cygdrive/c/users/jeff/github/otp/erts/start_scripts/tmp && \
  erlc -W  -I/cygdrive/c/users/jeff/github/otp/lib/kernel/ebin 
ebin +no_warn_sasl +otp_build -o 
ipt /cygdrive/c/users/jeff/github/otp/erts/start_scripts/start_clean.rel )
File not found: 
Makefile:129: recipe for target 
ipt' failed
make[2]: *** [/cygdrive/c/users/jeff/github/otp/bin/start.script] Error 1
make[2]: Leaving directory 
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:
$ ./erl.exe
{(no error logger present"i)n ietr rtoerr: m"iEnrartoirn gi ni np 
"<,0{.b2a.d0a>r wgi,t[h{ eerxli_tp rviaml_uleo:a 
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 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130102/34e6a630/attachment.html>

More information about the erlang-questions mailing list