kalibera / rchk

102 stars 10 forks source link

ERROR: too many states (abstraction error?) in function strptime_internal #22

Closed ms609 closed 4 years ago

ms609 commented 4 years ago

I am seeing "ERROR: too many states (abstraction error?) in function strptime_internal" when rchking packages (more than one) on rhub's ubuntu-rchk machine.

I can't find any clues in the documentation to interpret what this message means. Is it a false alarm? Could you point me in the right direction?

Thanks!

kalibera commented 4 years ago

This means the function is too complicated for the tool to analyze. In short, you can ignore this but you should keep in mind that the function is not analyzed/checked (to the level other functions, not showing this error, are). Also, in this case, it is an internal function in R, not in your package.

The tool is building a model of what the function does, the model has some states, and in the case of this function, there are too many of them. One could build rchk with a higher limit for the number of states, but that often does not help in practice when the abstractions used don't allow to represent the function using a finite model. Often this happens when the protection stack depth increases with every loop iteration, but is not using a protection counter variable. This can happen also when say something happens (protection of list head, etc) only in one iteration, but the tool is not smart enough to see that, so it conservatively assumes it is happening in each iteration.