Hello Gerrit,
a while back I ran into a problem with the ShaderCacheTreeV3, but could
not pinpoint the problem then and forgot about it again. It has come
back now and this time I have the list of operations that are performed
on the cache up to the crash.
The crash happens in ShaderCacheTreeV3<>::find in the for loop:
for(; uiCurrId < uiLastId; ++uiCurrId)
{
UInt32 uiCurrIdx = vIds[uiCurrId] - uiLevelSub;
UInt16 uiJumpDist = 1;
if(uiCurrIdx <= LevelBits)
{
uiCurrBits |= IdxToBits[uiCurrIdx];
continue;
}
else
{
// HERE pCurrNode can be invalid/NULL
pNextNode = pCurrNode->_vChildren[uiCurrBits].asT2();
Sequence of operations on the cache [1]:
SCTV3::find vIds [3 4 ]
SCTV3::add pObject = '0x16321b0' vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [5 6 ]
SCTV3::add pObject = '0x163a8c0' vIds [5 6 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [3 4 ]
SCTV3::find vIds [7 8 13 ]
SCTV3::add pObject = '0x1646540' vIds [7 8 13 ]
SCTV3::find vIds [7 8 13 ]
SCTV3::find vIds [7 8 13 ]
SCTV3::find vIds [11 12 13 ]
I've added a check for pCurrNode == NULL at the crash point above and
just break out of the loop, this is the state at that point:
ShaderCacheTreeV3<>::find: Emergency break.
uiStartdId = 10
uiCurrId = 2
uiCurrIdx = 4
uiLevelSub = 9
uiStartLevel = 3
uiCurrBits = 0x6
vIds = [11 12 13 ]
Next thing that happens is the add for ids [11 12 13]:
SCTV3::add pObject = '0x164a940' vIds [11 12 13 ]
Is there just a test for pCurrNode == NULL missing or should this never
happen? I'm afraid without some sort of description of the caches
strategy this is a bit tricky for me to diagnose. Can you give some
details or keywords that I should google to get an idea how this cache
operates?
Thanks,
Carsten
[1] There are a few operations on the ShaderExecutableVar cache
interspersed, but I've removed them from the above list, the operations
shown are only those on the program cache.
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Opensg-core mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-core