Re: Mysterious CFQ crash and RCU

Paul Bolle
2011-05-23T22:20:51Z

On Mon, 2011-05-23 at 08:38 -0700, Paul E. McKenney wrote:
> Running under CONFIG_PREEMPT=y (along with CONFIG_TREE_PREEMPT_RCU=y)
> could be very helpful in and of itself. CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
> can also be helpful. In post-2.6.39 mainline, it should be possible
> to set CONFIG_DEBUG_OBJECTS_RCU_HEAD=y without CONFIG_PREEMPT=y, but
> again, CONFIG_PREEMPT=y can help find problems.

0) The first thing I tried (from your suggestions) was
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y. Given its dependencies (and, well, the
build system I used) I ended up with:

$ grep -e PREEMPT -e RCU /boot/config-2.6.39-0.local3.fc16.i686 |
grep -v "^#"
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_RCU_FANOUT=32
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PREEMPT=y
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
CONFIG_DEBUG_PREEMPT=y
CONFIG_PROVE_RCU=y
CONFIG_SPARSE_RCU_POINTER=y

It looks like I am unable to trigger the issue we're talking about here
when using that config.

1) For reference, the config of a kernel that does trigger it had:

$ grep -e PREEMPT -e RCU /boot/config-2.6.39-0.local2.fc16.i686 |
grep -v "^#"
CONFIG_TREE_RCU=y
CONFIG_RCU_FANOUT=32
CONFIG_RCU_FAST_NO_HZ=y
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_PROVE_RCU=y
CONFIG_SPARSE_RCU_POINTER=y

> > Again CONFIG_TREE_PREEMPT_RCU is available only if PREEMPT=y. So should
> > we enable preemtion and CONFIG_TREE_PREEMPT_RCU=y and try to reproduce
> > the issue?
>
> Please!

2) It appears I can't reproduce with those options enabled (see above).

> Polling is fine. Please see attached for a script to poll at 15-second
> intervals. Please also feel free to adjust, just tell me what you
> adjusted.

And should I now try to run that script on a config that triggers this
issue (such as the config under 1) above)?

Paul Bolle