All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] Kernel oops when reading /proc/xenomai/stats
@ 2010-02-10 18:11 Andreas Glatz
  2010-02-10 18:22 ` Jan Kiszka
  0 siblings, 1 reply; 7+ messages in thread
From: Andreas Glatz @ 2010-02-10 18:11 UTC (permalink / raw)
  To: xenomai@xenomai.org

Hi,

I consistently get a Kernel oops when I do a 'cat /proc/xenomai/stats' after killing the Xenomai user-space application which registers for several interrupts.

It's definitely Xenomai related as we are trying to allocate -784bytes of memory (~4GBytes) in nucleus/module.c:stat_seq_open() and we just hv 512MBytes :)

It seems that xnintr_count gets decremented twice when killing the application. The application itself doesn't delete the RT_INTR. We rely on the cleanup which
is done by the xenomai library (?) before exiting the application.

Best regards,
Andreas


That's the kernel oops with additional debugging info (starts with 'HUHU' - see code below the oops):

HUHU count=1 xnintr_count=-12
HUHU stat_seq_open: size=-784 count=-11
------------[ cut here ]------------
Badness at c007f28c [verbose debug info unavailable]
NIP: c007f28c LR: c007ef4c CTR: 00000014
REGS: db309c70 TRAP: 0700   Not tainted  (2.6.32-trunk-8360e)
MSR: 00029032 <EE,ME,CE,IR,DR>  CR: 24002444  XER: 00000000
TASK = db3cc860[3414] 'cat' THREAD: db308000
GPR00: 00000001 db309d20 db3cc860 00000000 00000001 00000000 db309ca8 00000041 
GPR08: 00000041 c0440000 00019ce4 00000000 24002448 1001cb7c 100042bc 100df49c 
GPR16: 00000002 c0380000 c0438434 c0440000 10014b50 db3b8380 000240d0 c0438d2c 
GPR24: 00000000 00000014 00000000 00000000 00000001 00000010 c0438d28 000040d0 
NIP [c007f28c] __alloc_pages_nodemask+0x418/0x4ac
LR [c007ef4c] __alloc_pages_nodemask+0xd8/0x4ac
Call Trace:
[db309d20] [c007ef4c] __alloc_pages_nodemask+0xd8/0x4ac (unreliable)
[db309d90] [c007f33c] __get_free_pages+0x1c/0x4c
[db309da0] [c00a57bc] __kmalloc+0xfc/0x11c
[db309dc0] [c0068d6c] stat_seq_open+0xf8/0x448
[db309e20] [c00ebf14] proc_reg_open+0x74/0x100
[db309e40] [c00a7e24] __dentry_open+0xd0/0x280
[db309e60] [c00b65dc] do_filp_open+0x250/0x874
[db309f10] [c00a7c60] do_sys_open+0x64/0x130
[db309f40] [c0013eec] ret_from_syscall+0x0/0x38
--- Exception: c01 at 0xff508a8
    LR = 0xff50848
Instruction dump:
419dfdb8 8011000c 540b016f 40a2fdac 61d30050 4bfffda4 73e00200 4082fd00 
3d20c044 8009261c 7c000034 5400d97e <0f000000> 2f800000 419efce4 38000001 

Message from syslogd@domain.hid at Wed Feb 10 13:02:26 2010 ...
ruggedcom kernel: ------------[ cut here ]------------
cat: /proc/xenomai/stat: Cannot allocate memory



diff -ruN   ../../../linux-2.6.30-8RR11/kernel/xenomai/nucleus/module.c nucleus/module.c
--- ../../../linux-2.6.30-8RR11/kernel/xenomai/nucleus/module.c	2009-12-08 18:30:05.000000000 -0500
+++ nucleus/module.c	2010-02-10 12:58:23.000000000 -0500
@@ -348,7 +348,7 @@
 	struct seq_file *seq;
 	xnholder_t *holder;
 	struct stat_seq_info *stat_info;
-	int err, count, thrq_rev, intr_rev, irq;
+	int err, count, thrq_rev, intr_rev, irq, size;
 	spl_t s;
 
 	if (!xnpod_active_p())
@@ -373,15 +373,20 @@
 	 * fact later.  Should xnintr_list_rev change later,
 	 * xnintr_query() will trigger an appropriate error below. */
 
+	printk("HUHU count=%d xnintr_count=%d\n", count, xnintr_count);
+
 	intr_rev = xnintr_list_rev;
 	xnarch_memory_barrier();
 	count += xnintr_count * RTHAL_NR_CPUS;
 
 	if (iter)
 		kfree(iter);
-	iter = kmalloc(sizeof(*iter)
-		       + (count - 1) * sizeof(struct stat_seq_info),
-		       GFP_KERNEL);
+
+	size = sizeof(*iter) + (count - 1) * sizeof(struct stat_seq_info);
+	printk("HUHU stat_seq_open: size=%d count=%d\n", size, count);
+
+	iter = kmalloc(size, GFP_KERNEL);
+
 	if (!iter)
 		return -ENOMEM;


^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [Xenomai-help] Kernel oops when reading /proc/xenomai/stats
@ 2010-02-12 23:36 Andreas Glatz
  0 siblings, 0 replies; 7+ messages in thread
From: Andreas Glatz @ 2010-02-12 23:36 UTC (permalink / raw)
  To: xenomai

>> Hi,
>>
>>>>>> That's the kernel oops with additional debugging info (starts with 'HUHU' - see code below
>+the oops):
>>>>>>
>>>>>> HUHU count=1 xnintr_count=-12
>>>>> That's not good. What is your Xenomai version?
>>>> Hardware=MPC8360, Linux=2.6.32, Xenomai=2.4.10, ipipe=2.8-00
>>>>
>>>>> Does everything work fine if you application terminates normally and
>>>>> deletes the rt_intr objects explicitly?
>>>> Checking...
>>>>
>>> And then you may want to track this down at the site that decrements
>>> xnintr_count, ie. rt_intr_delete -> xnintr_detach.
>>
>> This Email contains three patches.
>
>Good catches! But please post them as separated patches following the
>well-know standards (proper subject, a short description, signed-off,
>inlined patch against xenomai.git).

Hope the format is ok now.

Andreas




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-02-12 23:36 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-10 18:11 [Xenomai-help] Kernel oops when reading /proc/xenomai/stats Andreas Glatz
2010-02-10 18:22 ` Jan Kiszka
2010-02-10 18:23   ` Andreas Glatz
2010-02-10 18:33     ` Jan Kiszka
2010-02-10 22:52       ` Andreas Glatz
2010-02-11  8:11         ` Jan Kiszka
  -- strict thread matches above, loose matches on Subject: below --
2010-02-12 23:36 Andreas Glatz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.