Re: rtmutex assert failure (was [Patch] restore the RCU callback...)

Bill Huey
2006-08-26T10:28:37Z

On Fri, Aug 25, 2006 at 06:24:29PM -0700, Robert Crocombe wrote:
> On 8/25/06, hui Bill Huey <billh@gnuppy.monkey.org> wrote:
> > http://mmlinux.sourceforge.net/public/against-2.6.17-rt8-2.diff
> BUG: scheduling while atomic: make/0x00000001/14632
>
> Call Trace:
> <ffffffff802fbc2e>{plist_check_head+60}
> <ffffffff8025d2eb>{__schedule+155}
> <ffffffff8028f06a>{task_blocks_on_rt_mutex+643}
> <ffffffff8020efda>{__mod_page_state_offset+25}
> <ffffffff802871de>{find_task_by_pid_type+24}
> <ffffffff8020efda>{__mod_page_state_offset+25}
> <ffffffff8025dad7>{schedule+236}
> <ffffffff8025e96d>{rt_lock_slowlock+416}
> <ffffffff8025f4b8>{rt_lock+13}
> <ffffffff8020efda>{__mod_page_state_offset+25}
> <ffffffff8029ab91>{__free_pages_ok+336}
> <ffffffff8022c07e>{__free_pages+47}
> <ffffffff80233bb0>{free_pages+128}
> <ffffffff802580df>{free_task+26}
> <ffffffff80245b52>{__put_task_struct+182}
> <ffffffff8025d86e>{thread_return+163}
> <ffffffff8025dad7>{schedule+236}
> <ffffffff80245ff1>{pipe_wait+111}
> <ffffffff802893ac>{autoremove_wake_function+0}
> <ffffffff8025e7c8>{rt_mutex_lock+50}
> <ffffffff8022ce81>{pipe_readv+785}
> <ffffffff8025eaa6>{rt_lock_slowunlock+98}
> <ffffffff8025f4a9>{__lock_text_start+9}
> <ffffffff802aea38>{pipe_read+30}
> <ffffffff8020afae>{vfs_read+171}
> <ffffffff8020fdbc>{sys_read+71}
> <ffffffff8025994e>{system_call+126}
> ---------------------------
> | preempt count: 00000001 ]
> | 1-level deep critical section nesting:
> ----------------------------------------
> .. [<ffffffff8025d303>] .... __schedule+0xb3/0x57b
> .....[<ffffffff8025dad7>] .. ( <= schedule+0xec/0x11a)

Things like this make me wonder if you're even appying the patch correctly.

The occurance of free_task() and friends should be completely gone. All
of those scheduling in atomics should be flat out kernel panics and the
kernel should immediately stop. I'll look at it again to see if missed a
compile options or something, but this is really odd cause it should stop
the kernel dead in its tracks.

bill