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

Jeffrey Rennie <>
Thu Jan 3 04:26:09 CET 2013

I'm working through the example here:
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
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:

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 ;-)

More information about the erlang-questions mailing list