On Tue, May 04, 2004 at 02:55:25PM +0200, Leopold Toetsch wrote:
> Bernhard Schmalhofer <[EMAIL PROTECTED]> wrote:
> 
> > 'libnci.so' is used for testing the native call interface. However I noticed
> > that the tests in t/pmc/nci.t were skipped, because 'libnci.so' wasn't built
> > by default. The attached patch adds that library to the target 'all'.
> 
> Thanks, applied. Let's see, which platforms break.
OS X.

With this patch I get make to pass, but I suspect that this patch will break
Win32, assuming that $(LIBNCI_SO) is libnci.dll on Win32, as there is a
second, explict libnci.dll target next in the Makefile

Index: config/gen/makefiles/root.in
===================================================================
RCS file: /cvs/public/parrot/config/gen/makefiles/root.in,v
retrieving revision 1.205
diff -d -u -r1.205 root.in
--- config/gen/makefiles/root.in        4 May 2004 12:55:21 -0000       1.205
+++ config/gen/makefiles/root.in        6 May 2004 13:51:12 -0000
@@ -1141,7 +1141,7 @@
 
 $(SRC)/libnci$(O): $(SRC)/nci_test.c
 
-$(DYNEXT_DIR)/libnci.so: $(SRC)/nci_test$(O)
+$(LIBNCI_SO): $(SRC)/nci_test$(O)
        $(LD) $(LD_SHARED) $(LDFLAGS) \
            $(LD_OUT)$@ $(SRC)/nci_test$(O)
 


However, with this I now have a failing regression test. running in gdb:

Starting program: /Users/nick/Parrot/parrot02/parrot -b --gc-debug 
/Users/nick/Parrot/parrot02/t/pmc/nci_20.pasm
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries .+ done
Reading symbols for shared libraries . done

Program received signal EXC_BAD_ACCESS, Could not access memory.
0x0002e354 in pobject_lives (interpreter=0x1000200, obj=0xd13a68) at src/dod.c:194
194         PObj_live_SET(obj);
(gdb) print *obj
$1 = {
  obj = {
    u = {
      _b = {
        _bufstart = 0x7c0802a6, 
        _buflen = 3217162232
      }, 
      _ptrs = {
        _struct_val = 0x7c0802a6, 
        _pmc_val = 0xbfc1fff8
      }, 
      _int_val = 2080899750, 
      _num_val = 2.9248558425698019e+289, 
      _string_val = 0x7c0802a6
    }, 
    flags = 2415984648, 
    _pobj_version = 2485256112
  }
}


which is now confusing me mightily, because I can change the value of flags
inside gdb with a set command. Yet attempting to restart the process will
fail with the EXC_BAD_ACCESS signal straight away.

Am I confusing what EXC_BAD_ACCESS means? Error is here:

(gdb) where
#0  0x0002e354 in pobject_lives (interpreter=0x1000200, obj=0xd13a68) at src/dod.c:194
#1  0x0002e434 in trace_active_PMCs (interpreter=0x1000200, trace_stack=1) at 
src/dod.c:254
#2  0x0002f224 in Parrot_do_dod_run (interpreter=0x1000200, flags=1) at src/dod.c:1051
#3  0x000321c8 in string_compare (interpreter=0x1000200, s1=0x1001ba8, s2=0x1012a40) 
at src/string.c:1710
#4  0x001e4360 in build_call_func (interpreter=0x1000200, pmc_nci=0x100f6a0, 
signature=0x1001ba8) at src/nci.c:2925
#5  0x001ae474 in Parrot_NCI_set_string_keyed (interpreter=0x1000200, pmc=0x100f6a0, 
func=0xd13a68, value=0x1001ba8) at classes/nci.c:86
#6  0x0006b144 in Parrot_set_p_k_sc (cur_opcode=0xc0b218, interpreter=0x1000200) at 
ops/set.ops:458
#7  0x00112318 in runops_slow_core (interpreter=0x1000200, pc=0xc0b218) at 
src/runops_cores.c:146
#8  0x0000b4fc in runops_int (interpreter=0x1000200, offset=0) at src/interpreter.c:819
#9  0x0000b62c in runops (interpreter=0x1000200, offset=0) at src/interpreter.c:872
#10 0x0000fb50 in Parrot_runcode (interpreter=0x1000200, argc=1, argv=0xbffff784) at 
src/embed.c:742
#11 0x0000f960 in Parrot_runcode (interpreter=0x1000200, argc=1, argv=0xbffff784) at 
src/embed.c:676
#12 0x00004284 in main (argc=1, argv=0xbffff784) at imcc/main.c:556


Nicholas Clark

Reply via email to