ocpirun SEGFAULT caused by null pointer


I'm getting a SEGFAULT caused by util/property/src/ValueReader.cxx line 30 has a dereferenced null pointer (m.m_ordinal is zero):

The last log message (-l 8) that gets printed out is "Loading RCC worker artifact ..."
Stack trace is as follows:


RHEL 6.7
OpenCPI git commit 9de297ccfc8ece6382911bc85663f6dc338b9e3d


Davis Hoover
January 29, 2016, 9:49 PM

I erroneously wrote originally that m.m_ordinal had a value of zero, when actually it is the sv pointer that is zero.

I have not 100% verified the following statement via stepping through the code, but apparently this issue arose due to the fact that it is possible to declare Channels Property in an App .xml with a different number of Channels than exists in the Worker .xml which that App .xml is referring to.

At the very least, line 30 of ValueReader.cxx needs to check for the existence of a null pointer before dereferencing it. That being said, what is really needed is some mechanism in ocpirun that will validate Channels Properties vs. the Channel Property of the Device Worker which it is referring to - in particular, checking at least that the number of channels is the same.

James Kulp
April 12, 2017, 11:33 AM

Do you think this is still an issue? Can it be repeated?

Davis Hoover
April 17, 2017, 2:52 PM

I obviously expect it to still be an issue and repeatable using the git commit ID specified. I don't know if the handling of array properties has changed since that commit (when I initially said "Channels" I think I was referring to the si5351 worker property and I really meant "array properties in general").

I think I have seen (much more recently) apps run just fine with less array elements specified than exist in OWD. I don't know about more array elements, though. Having a default value or not may affect the occurrence if this segfault as well.




Davis Hoover