I can also reproduce the crash using the test code you provided, but I'm not having any problems with running fluxus in gdb.

<snip>
Seg fault (internal error) at 0x0

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
Fluxus::PolyPrimitive::CalculateGeometricNormals (this=0x128a800) at libfluxus/src/PolyPrimitive.cpp:444 444 dVector a((*m_VertData)[m_IndexData[i]]-(*m_VertData) [m_IndexData[i+1]]);
(gdb) bt
#0 Fluxus::PolyPrimitive::CalculateGeometricNormals (this=0x128a800) at libfluxus/src/PolyPrimitive.cpp:444 #1 0x0260d044 in Fluxus::PolyPrimitive::RecalculateNormals (this=0x128a800, smooth=true) at libfluxus/src/PolyPrimitive.cpp:363 #2 0x025ee5ac in recalc_normals (argc=<value temporarily unavailable, due to optimizations>, argv=0x9d8fac) at modules/fluxus-engine/src/ PDataFunctions.cpp:759 #3 0x00502818 in scheme_do_eval (obj=0x28521b0, num_rands=1, rands=0x9d8fac, get_value=1) at eval.c:8951 #4 0x005041dc in scheme_do_eval (obj=0x253b248, num_rands=-1, rands=0x0, get_value=-1) at eval.c:9865
#5  0x00508b14 in eval_k () at eval.c:10089
#6 0x0051f8d0 in scheme_top_level_do_worker (k=0x5087ac <eval_k>, eb=1, new_thread=0, dyn_state=0x0) at fun.c:2235 #7 0x00508e90 in scheme_eval_multi (obj=<value temporarily unavailable, due to optimizations>, env=0xed4268) at eval.c:9984 #8 0x00509190 in do_eval_string_all (port=0x2527598, str=<value temporarily unavailable, due to optimizations>, env=0xed4268, cont=1, w_prompt=10325936) at eval.c:11067 #9 0x00008fc8 in Fluxus::PolyPrimitive::CalculateGeometricNormals () at libfluxus/src/PolyPrimitive.cpp:444 #10 0x00008fc8 in Fluxus::PolyPrimitive::CalculateGeometricNormals () at libfluxus/src/PolyPrimitive.cpp:444 #11 0x00008fc8 in fluxus::Interpreter::Interpret (str=<value temporarily unavailable, due to optimizations>, ret=0x0, abort=false) at src/Interpreter.cpp:444
#12 0x00014d18 in DisplayCallback () at src/main.cpp:225
#13 0x3e005650 in -[GLUTView drawRect:] ()
#14 0x3e008b00 in -[GLUTView handleWorkEvent:] ()
#15 0x3e022ddc in processWindowWorkList ()
#16 0x3e022e6c in __glutProcessWorkEvents ()
#17 0x3e00fa74 in -[GLUTApplication run] ()
#18 0x3e0227e4 in glutMainLoop ()
#19 0x00015808 in run (data=<value temporarily unavailable, due to optimizations>) at src/main.cpp:416 #20 0x004c4ea8 in scheme_main_stack_setup (no_auto_statics=1, _main=<value temporarily unavailable, due to optimizations>, data=0xbffff798) at salloc.c:195 #21 0x000131fc in main (argc=<value temporarily unavailable, due to optimizations>, argv=<value temporarily unavailable, due to optimizations>) at src/main.cpp:426
</snip>

I'm on Mac OS X 10.5.8 PPC (G4) running the latest fluxus git + Racket. I built both with Apple's GCC 4.0.1.


Karl

On Jun 30, 2010, at 12:35 PM, Hugo van Galen wrote:

Hello again list :)

I was playing around with the a simple shape. Wondering whether the lighting would be better, I threw in the 'poly-convert-to-indexed' call. I observed that, if that's called, it crashes on the next call to 'recalc-normals'.

The same behaviour on the 0.17-rc5 version (PLT 4.2.5) as the GIT version I downloaded earlier and modified myself to compile against Racket 5.0, which leads me to believe that this must be a bug in the program...

Now, for some reason I am unable to run 'gdb' on the fluxus binary, it starts coughing up segmentation faults all over the place like these right after 'run':

Program received signal SIGSEGV, Segmentation fault.
scheme_gmp_tls_unload (s=0x7ffff1076360, data=0x0) at ./gmp/gmp.c:5816
5816    ./gmp/gmp.c: No such file or directory.
        in ./gmp/gmp.c

Anyone know what's up with that, or is there an obscure compile option to make that work?

Anyway, here is the code that crashes the program:

(clear)
(colour (vector 1 1 1))

(define mypoly (build-polygons 8 'triangle-strip))
(with-primitive mypoly
    (pdata-set! "p"  0 (vector 1 0 0))
    (pdata-set! "p"  1 (vector 4 0 0))
    (pdata-set! "p"  2 (vector 1 2 0))
    (pdata-set! "p"  3 (vector 4 2 0))

    (pdata-set! "p"  4 (vector 0 2 0))
    (pdata-set! "p"  5 (vector 5 2 0))
    (pdata-set! "p"  6 (vector 0 6 0))
    (pdata-set! "p"  7 (vector 5 6 0))

    (poly-convert-to-indexed)
    (recalc-normals 1); crash here
)


Cheers,
Hugo




Reply via email to