From: Jason Daly (jdaly++at++ist.ucf.edu)
Date: 04/11/2002 08:49:17
Something similar, yes. I've sent in at least three messages on this topic
in the past and have gotten no reply. Our problem is that the
pfNode::isect() call completes, but when we query the path, it is incomplete.
The first few nodes (always a multiple of 32) are valid, but the rest
are NULL, even though the space has been allocated for them.
We've seen it consistently at 32 nodes or deeper under IRIX. Under Linux
occasionaly happens at 32 nodes, but it seems to happen more often at 64
nodes. We don't have any scenes deeper than 90 or so, so I'm not sure
if the multiple of 32 trend would continue at 96.
Nobody has commented on it, so we ended up implementing a workaround that
traces the pfPath and checks for a NULL value that happens prematurely
(based on the length of the path as reported by pfPath::getNum()). It then
backs up one path element, transforms the pfSeg's and does another isect().
It's ugly, and there are occasional instances where it doesn't seem to work,
but it's better than nothing.
I'd love to have this problem fixed. I believe it has existed since at
least Performer 2.2. It would be great if someone from the Performer
team could at least acknowledge the problem. I'd be happy to send
a minimal test case that we've put together.
On Thu, 11 Apr 2002, Bram Stolk wrote:
> Hello,
>
>
> I am getting crashes on pfNode::isect() when isecting with geometry
> that has been deeply nested.
>
> I get bus errors and segm violations.
>
> Interestingly, I can intersect geometry that is at lvl 30 with
> no problem, even if the entire scene is 100 deep.
> But if I intersect something in the same scene at levels of
> 32 and above, I get crashes.
>
> I do my intersections with pfPath specifications enabled.
>
> Maybe pfPaths cannot be larger than 32 entries?
>
> The crash occurs in pfNode::isect() itself, before I can
> access the pfPath structure.
>
> I am on IRIX and an Onyx IR2.
> For a dbx trace, see:
>
>
> > 0 pfList::reset(void)(0x3ed17245, 0x0, 0x400, 0x0, 0x4becb60, 0x0, 0x0, 0x49b0fe74) ["/build/perfbuild/perftot1/perf/lib/libpr/pfList.C":536, 0x4525008]
> 1 pfNode::pf_isect(pfSegSet*,pfHit***,pfChannel*,pfMatrix*)(0x3ed17245, 0x0, 0x0, 0x0, 0x4becb60, 0x0, 0x0, 0x49b0fe74) ["/build/perfbuild/perftot1/perf/lib/libpf/pfNode.C":1388, 0x43b5400]
> 2 pfNode::nb_isect(pfSegSet*,pfHit***)(0x3ed17245, 0x0, 0x400, 0x0, 0x4becb60, 0x0, 0x0, 0x49b0fe74) ["/build/perfbuild/perftot1/perf/lib/libpf/pfNode.C":875, 0x43b3fe0]
> 3 pfNode::isect(pfSegSet*,pfHit***)(this = 0x481d9fd0, segSet = 0x7fff1e88, hits = 0x7fff2308) ["/usr/include/Performer/pf/pfNode.h":193, 0x49fc89c]
> 4 Selector::FindIntersected(pfNode*,pfMatrix&,float)(this = 0x101e6600, root = 0x481d9fd0, mat = 0x49b16740, grabsize = 4.0) ["/home/sara/bram/saradist/src/sarasim/selector.C":170, 0x49fd1f8]
>
> Anyone experienced something similar?
>
> thx
>
> Bram
--"J"
"I'm a castaway stranded in a desolate land,
I can see the footprints in the virtual sand."
--Neil Peart
This archive was generated by hypermail 2b29 : Thu Apr 11 2002 - 08:51:25 PDT