Re: [Linux v4.2] workqueue: llvmlinux: acpid: BUG: sleeping function called from invalid context at kernel/workqueue.c:2680

From: Sedat Dilek
Date: Sun Sep 27 2015 - 04:11:13 EST


On Fri, Sep 25, 2015 at 3:13 PM, Jiri Kosina <jikos@xxxxxxxxxx> wrote:
> On Fri, 25 Sep 2015, Sedat Dilek wrote:
>
>> > The sequence looks correct. So I don't really see what call sequence could
>> > lead to calling flush_work() from __cancel_work_timer() with IRQs
>> > disabled (which is what your stacktrace is suggesting).
>> >
>> > The fact that this doesn't happen with GCC-compiled kernels is really
>> > suspicious.
>> >
>>
>> Hm, and now?
>
> I guess one of the things to try is to generate ftrace graph trace to see
> what exact function sequence leads to this warning.
>

Which kernel-config settings are helpful for ftrace and tracing at all?

I have here...

CONFIG_IRQSOFF_TRACER=n

...is that helpful to trigger why I see "irqs_disabled"...

[ 23.874836] BUG: sleeping function called from invalid context at
kernel/workqueue.c:2678
[ 23.874902] in_atomic(): 0, irqs_disabled(): 1, pid: 1411, name: acpid

Also independent of this issue I would like to set...

CONFIG_LOCKDEP=y
CONFIG_DEBUG_LOCKDEP=y <--- XXX: New setting

I recall something like a trace/tracing filesystem?
I cannot find or remember the Kconfig - do you?

# CONFIG_BACKTRACE_SELF_TEST is not set
CONFIG_BLK_DEV_IO_TRACE=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_DYNAMIC_FTRACE=y
# CONFIG_FENCE_TRACE is not set
CONFIG_FTRACE_MCOUNT_RECORD=y
# CONFIG_FTRACE_STARTUP_TEST is not set
CONFIG_FTRACE_SYSCALLS=y
CONFIG_FTRACE=y
CONFIG_FUNCTION_GRAPH_TRACER=y
CONFIG_FUNCTION_TRACER=y
CONFIG_GENERIC_TRACER=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_KPROBES_ON_FTRACE=y
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
# CONFIG_IRQSOFF_TRACER is not set
CONFIG_KPROBES_ON_FTRACE=y
# CONFIG_MMIOTRACE_TEST is not set
CONFIG_MMIOTRACE=y
CONFIG_NOP_TRACER=y
# CONFIG_PSTORE_FTRACE is not set
# CONFIG_RCU_TRACE is not set
CONFIG_SCHED_TRACER=y
CONFIG_STACK_TRACER=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_STACKTRACE=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_TRACE_CLOCK=y
# CONFIG_TRACE_ENUM_MAP_FILE is not set
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_TRACE_IRQFLAGS=y
# CONFIG_TRACEPOINT_BENCHMARK is not set
CONFIG_TRACEPOINTS=y
CONFIG_TRACER_MAX_TRACE=y
# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
CONFIG_TRACER_SNAPSHOT=y
# CONFIG_TRACE_SINK is not set
# CONFIG_TREE_RCU_TRACE is not set
CONFIG_USER_STACKTRACE_SUPPORT=y

Thanks in advance.

- Sedat -

Attachment: config-4.3.0-rc2-438.1-llvmlinux-amd64
Description: Binary data