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
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
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 ...