Again, my foo.pir is
.include "datatypes.pasm"
.sub test :main
# load library
.local pmc libnci_test
libnci_test = loadlib "libnci_test"
unless libnci_test goto NOT_LOADED
print "libnci_test was successfully loaded\n"
# calling a function in libnci_test
.local pmc nci_c
dlfunc nci_c, libnci_test, "nci_c", "c"
.local int nci_c_out
( nci_c_out ) = nci_c( )
print nci_c_out
print "\n"
.end
and now compiled with dmalloc.
Here is a backtrace... it might be readable by people who knows parrot
internals.
Also, as I'm not very used to use gdb, if I can give more information,
let me know.
Cheers,
Thanks
(gdb) r foo.pir
Starting program: /Users/ambs/tmp/parrot/t/pmc/parrot foo.pir
Reading symbols for shared libraries . done
debug-malloc library: dumping program, fatal error
Error: pointer is not to start of memory block (err 30)
Program received signal SIGABRT, Aborted.
0x9004a12c in kill ()
(gdb) bt
#0 0x9004a12c in kill ()
#1 0x90120954 in abort ()
#2 0x00267dd8 in _dmalloc_die (silent_b=0) at error.c:656
#3 0x00267e70 in dmalloc_error (func=0x28992c "free") at error.c:703
#4 0x00268764 in log_error_info (now_file=0x0, now_line=0,
user_pnt=0xae4389, slot_p=0xadaae4, reason=0x289ed0 "checking pointer
admin", where=0xbfffded3 "0¿ÿß\034") at chunk.c:1013
#5 0x0026a010 in _dmalloc_chunk_free (file=0x0, line=0,
user_pnt=0xae4389, func_id=10) at chunk.c:2544
#6 0x0026702c in dmalloc_free (file=0x0, line=0, pnt=0xae4389,
func_id=17) at malloc.c:974
#7 0x000400b8 in scan_paths (filename=0xfcc888
"/Users/ambs/tmp/parrot/runtime/parrot/dynext/libnci_test.bundle",
libpath=0xbffff8a8 ":") at config/gen/platform/darwin/dl.c:35
#8 0x00040200 in get_lib (filename=0xfcc888
"/Users/ambs/tmp/parrot/runtime/parrot/dynext/libnci_test.bundle") at
config/gen/platform/darwin/dl.c:65
#9 0x000402a8 in Parrot_dlopen (filename=0xfcc888
"/Users/ambs/tmp/parrot/runtime/parrot/dynext/libnci_test.bundle") at
config/gen/platform/darwin/dl.c:85
#10 0x000a6e04 in get_path (interpreter=0xad5f08, lib=0xf274f0,
handle=0xbffff2bc, lib_name=0xbffff2c0) at src/dynext.c:168
#11 0x000a72d4 in Parrot_load_lib (interpreter=0xad5f08, lib=0xf274f0,
initializer=0x0) at src/dynext.c:334
#12 0x0006ebdc in Parrot_loadlib_p_sc (cur_opcode=0xfcc788,
interpreter=0xad5f08) at ops/core.ops:1187
#13 0x001dc5c4 in runops_slow_core (interpreter=0xad5f08, pc=0xfcc788)
at src/runops_cores.c:153
#14 0x0004ba40 in runops_int (interpreter=0xad5f08, offset=0) at
src/interpreter.c:750
#15 0x00044a04 in runops (interpreter=0xad5f08, offs=0) at
src/inter_run.c:81
#16 0x00044cec in runops_args (interpreter=0xad5f08, sub=0xf31208,
obj=0xc345d8, meth=0x0, sig=0x270104 "vP", ap=0xbffff564 "") at
src/inter_run.c:181
#17 0x00044e90 in Parrot_runops_fromc_args (interpreter=0xad5f08,
sub=0xf31208, sig=0x270104 "vP") at src/inter_run.c:275
#18 0x00017c70 in Parrot_runcode (interpreter=0xad5f08, argc=1,
argv=0xbffff73c) at src/embed.c:841
#19 0x000179dc in Parrot_runcode (interpreter=0xad5f08, argc=1,
argv=0xbffff73c) at src/embed.c:772
#20 0x000043c8 in main (argc=1, argv=0xbffff73c) at imcc/main.c:643
(gdb)
--
Alberto Simões - Departamento de Informática - Universidade do Minho
Campus de Gualtar - 4710-057 Braga - Portugal