#118 segfault using rayinfo() in gather()

open
nobody
None
5
2009-09-12
2009-09-12
No

It appears Pixie crashes with a segfault when using rayinfo("depth",) inside a gather(){} loop, but only when a ray hits nothing. The attached example produces the problem, you can also comment out the rayinfo() in the shader to prevent the crash or swap comments in the RIB to fully enclose the reflection to prevent the crash. There also appears to be some discrepancy with this depending on whether Pixie is compiled for 32/64bit and possibly depending on build environment (although this could just be chance since I can't test for 64bit).

I use this technique to simulate Blender's fade to sky/diffuse behavior with reflection/refraction and has been tested to work in 3Delight and Air. This bug has been reported by a user in my forum and could be related to one of the problems reported by the same user here http://sourceforge.net/projects/pixie/forums/forum/200367/topic/3325597

Discussion

  • Anonymous - 2009-09-12
     
  • stfree

    stfree - 2009-09-13

    to complete this post by Eric, I confirm that after having made 2 changes in the scriptOpcodes.h, I have no problem. But it's my 64bit compiled version, if someone could give it a try.

    // DATA MOVEMENT OPERATIONS
    //
    //
    //
    //
    //
    //
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    #define OPERATION
    DEFOPCODE(Moveff ,"moveff" ,2, OPERANDS2EXPR_PRE(float *,const float *),FUNARYEXPR,OPERANDS2EXPR_UPDATE(1,1), NULL_EXPR,0)
    DEFOPCODE(Movevv ,"movevv" ,2, OPERANDS2EXPR_PRE(float *,const float *),VUNARYEXPR,OPERANDS2EXPR_UPDATE(3,3), NULL_EXPR,0)
    DEFOPCODE(Movemm ,"movemm" ,2, OPERANDS2EXPR_PRE(float *,const float *),MUNARYEXPR,OPERANDS2EXPR_UPDATE(16,16), NULL_EXPR,0)
    --DEFOPCODE(Movess ,"movess" ,2, OPERANDS2EXPR_PRE(float *,const float *),SUNARYEXPR,OPERANDS2EXPR_UPDATE(1,1), NULL_EXPR,0)
    ++DEFOPCODE(Movess ,"movess" ,2, OPERANDS2EXPR_PRE(char**, char**),SUNARYEXPR,OPERANDS2EXPR_UPDATE(1,1), NULL_EXPR,0)
    DEFOPCODE(VUFloat ,"vufloat" ,2, OPERANDS2EXPR_PRE(float *,const float *),FUNARYEXPR,OPERANDS2EXPR_UPDATE(1,0), NULL_EXPR,0)
    DEFOPCODE(VUVector ,"vuvector" ,2, OPERANDS2EXPR_PRE(float *,const float *),VUNARYEXPR,OPERANDS2EXPR_UPDATE(3,0), NULL_EXPR,0)
    DEFOPCODE(VUMatrix ,"vumatrix" ,2, OPERANDS2EXPR_PRE(float *,const float *),MUNARYEXPR,OPERANDS2EXPR_UPDATE(16,0), NULL_EXPR,0)
    --DEFOPCODE(VUString ,"vustring" ,2, OPERANDS2EXPR_PRE(float *,const float *),SUNARYEXPR,OPERANDS2EXPR_UPDATE(1,0), NULL_EXPR,0)
    ++DEFOPCODE(VUString ,"vustring" ,2, OPERANDS2EXPR_PRE(char** ,char**),SUNARYEXPR,OPERANDS2EXPR_UPDATE(1,0), NULL_EXPR,0)
    #undef OPERATION

     
  • stfree

    stfree - 2009-09-13

    Sorry, but the problem is not resolved, in my testing process I configured:
    ./configure --enable-selfcontained CXXFLAGS="-ggdb -O0 -mfpmath=sse -msse2 -march=core2" CFLAGS="-ggdb -O0 -msse2 -mfpmath=sse -march=core2"

    in this case it works

    but if i switch on O2 segfault ...

     

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.





No, thanks