* [Xenomai-core] rtdm_dev_register oops
@ 2010-05-18 10:15 Stefan Kisdaroczi
2010-05-18 11:03 ` Jan Kiszka
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Kisdaroczi @ 2010-05-18 10:15 UTC (permalink / raw)
To: xenomai
[-- Attachment #1.1: Type: text/plain, Size: 372 bytes --]
hi,
i got a exception in rtdm_dev_register(). I didnt call rtdm_dev_unregister in my driver
and after insmodding the module again I got a oops.
xenomai 2.5.3, linux 2.6.32.11, x86 32bit, ubuntu 10.04.
Attached is the dmesg-trace and a small rtdm-module foo.c for reproduction:
insmod ./xeno_foo.ko
rmmod xeno_foo
insmod ./xeno_foo.ko -> oops
thanks
stefan
[-- Attachment #1.2: Makefile --]
[-- Type: text/plain, Size: 438 bytes --]
UNAME := $(shell uname -r)
PWD := $(shell pwd)
LINUXSOURCEDIR := /usr/src/linux-headers-$(UNAME)
obj-m := xeno_foo.o
xeno_foo-y := foo.o
EXTRA_CFLAGS := -I/usr/src/linux-headers-$(UNAME)/include/xenomai
all::
$(MAKE) -C $(LINUXSOURCEDIR) SUBDIRS=$(PWD) modules
clean::
$(RM) .*.cmd *.cmd *.o *.ko *.mod.c *.order *.symvers
$(RM) -R .tmp*
.PHONY: clean
[-- Attachment #1.3: foo.c --]
[-- Type: text/plain, Size: 864 bytes --]
#include <linux/module.h>
#include <rtdm/rtdm_driver.h>
MODULE_AUTHOR( "Stefan Kisdaroczi" );
MODULE_LICENSE( "GPL" );
int foo_open_nrt( struct rtdm_dev_context *context,
rtdm_user_info_t *user_info,
int oflags ) {
return 0;
}
int foo_close_nrt( struct rtdm_dev_context *context,
rtdm_user_info_t *user_info ) {
return 0;
}
struct rtdm_device foo_rtdm_device = {
device_flags: RTDM_NAMED_DEVICE,
device_class: RTDM_CLASS_EXPERIMENTAL,
device_sub_class: RTDM_SUBCLASS_GENERIC,
device_name: "foo0",
proc_name: "foo0",
device_id: 0,
open_nrt : foo_open_nrt,
ops: {
close_nrt: foo_close_nrt,
},
};
int __init foo_init( void ) {
return rtdm_dev_register( &foo_rtdm_device );
}
void __exit foo_exit( void ) {
/* rtdm_dev_unregister( &foo_rtdm_device, 1000 ); */
}
module_init( foo_init );
module_exit( foo_exit );
[-- Attachment #1.4: foo.trace --]
[-- Type: text/plain, Size: 2498 bytes --]
[ 185.000326] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 185.000340] IP: [<c01f873a>] rtdm_dev_register+0x2ea/0x470
[ 185.000358] *pde = 00000000
[ 185.000365] Oops: 0000 [#1] SMP
[ 185.000373] last sysfs file: /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.2/0000:03:0d.0/host4/target4:0:1/4:0:1:0/block/sdb/uevent
[ 185.000381] Modules linked in: xeno_foo(+) snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy hisax crc_ccitt isdn snd_seq_oss com20020_pci snd_seq_midi snd_rawmidi snd_seq_midi_event com20020 arcnet snd_seq snd_timer snd_seq_device psmouse e752x_edac snd shpchp ppdev soundcore serio_raw edac_core snd_page_alloc lp dcdbas parport_pc parport usbhid floppy hid aic79xx e1000 scsi_transport_spi [last unloaded: xeno_foo]
[ 185.000468]
[ 185.000476] Pid: 2216, comm: insmod Not tainted (2.6.32.11-xenomai-2.5.3 #2) Precision WorkStation 470
[ 185.000483] EIP: 0060:[<c01f873a>] EFLAGS: 00210202 CPU: 0
[ 185.000491] EIP is at rtdm_dev_register+0x2ea/0x470
[ 185.000498] EAX: 00000001 EBX: 000003a0 ECX: 000003a0 EDX: f832e06c
[ 185.000503] ESI: 00000000 EDI: f833f06c EBP: f6595f54 ESP: f6595f34
[ 185.000509] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[ 185.000515] Process insmod (pid: 2216, ti=f6594000 task=ecc1b340 task.ti=f6594000)
[ 185.000520] I-pipe domain Linux
[ 185.000524] Stack:
[ 185.000528] c019ba17 f6595f54 c059b953 f833f060 000003a0 fffffffc f833f120 00000000
[ 185.000544] <0> f6595f5c f834200d f6595f88 c0101132 f833f120 c07723a0 fffffffc f833f120
[ 185.000563] <0> b7815ff4 f8342000 fffffffc f833f120 b7815ff4 f6595fac c0175371 00200046
[ 185.000583] Call Trace:
[ 185.000594] [<c019ba17>] ? tracepoint_module_notify+0x27/0x30
[ 185.000605] [<c059b953>] ? notifier_call_chain+0x43/0x60
[ 185.000616] [<f834200d>] ? foo_init+0xd/0xf [xeno_foo]
[ 185.000627] [<c0101132>] ? do_one_initcall+0x32/0x1b0
[ 185.000636] [<f8342000>] ? foo_init+0x0/0xf [xeno_foo]
[ 185.000648] [<c0175371>] ? sys_init_module+0xb1/0x220
[ 185.000657] [<c0103145>] ? sysenter_do_call+0x12/0x16
[ 185.000663] Code: bf 92 c0 21 f1 c1 e1 03 89 4d f0 01 c8 8b 30 8b 16 0f 18 02 90 39 f0 0f 84 c8 00 00 00 89 5d ec 89 cb eb 1c 90 8d 74 26 00 8b 36 <8b> 06 0f 18 00 90 a1 c0 bf 92 c0 01 d8 39 c6 0f 84 a2 00 00 00
[ 185.000756] EIP: [<c01f873a>] rtdm_dev_register+0x2ea/0x470 SS:ESP 0068:f6595f34
[ 185.000767] CR2: 0000000000000000
[ 185.000772] ---[ end trace dbaf656208b2cc62 ]---
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 251 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [Xenomai-core] rtdm_dev_register oops
2010-05-18 10:15 [Xenomai-core] rtdm_dev_register oops Stefan Kisdaroczi
@ 2010-05-18 11:03 ` Jan Kiszka
2010-05-18 13:42 ` Stefan Kisdaroczi
0 siblings, 1 reply; 4+ messages in thread
From: Jan Kiszka @ 2010-05-18 11:03 UTC (permalink / raw)
To: Stefan Kisdaroczi; +Cc: xenomai
[-- Attachment #1: Type: text/plain, Size: 613 bytes --]
Stefan Kisdaroczi wrote:
> hi,
>
> i got a exception in rtdm_dev_register(). I didnt call rtdm_dev_unregister in my driver
> and after insmodding the module again I got a oops.
And that is surprising to you? :)
If you leave the previous device registered on rmmod, oopses are
programmed to occur: You leave references to unallocated memory behind.
Jan
> xenomai 2.5.3, linux 2.6.32.11, x86 32bit, ubuntu 10.04.
>
> Attached is the dmesg-trace and a small rtdm-module foo.c for reproduction:
> insmod ./xeno_foo.ko
> rmmod xeno_foo
> insmod ./xeno_foo.ko -> oops
>
> thanks
> stefan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Xenomai-core] rtdm_dev_register oops
2010-05-18 11:03 ` Jan Kiszka
@ 2010-05-18 13:42 ` Stefan Kisdaroczi
2010-05-18 16:43 ` Jan Kiszka
0 siblings, 1 reply; 4+ messages in thread
From: Stefan Kisdaroczi @ 2010-05-18 13:42 UTC (permalink / raw)
To: Jan Kiszka; +Cc: xenomai
[-- Attachment #1: Type: text/plain, Size: 1138 bytes --]
Am 18.05.2010 13:03, schrieb Jan Kiszka:
> Stefan Kisdaroczi wrote:
>> hi,
>>
>> i got a exception in rtdm_dev_register(). I didnt call rtdm_dev_unregister in my driver
>> and after insmodding the module again I got a oops.
>
> And that is surprising to you? :)
A bit.
> If you leave the previous device registered on rmmod, oopses are
> programmed to occur: You leave references to unallocated memory behind.
If one device fails to unregister i can't register any other device anymore,
the rtdm registry is broken (cat /proc/xenomai/rtdm/names_devices hangs).
That was surprising. If I have one corrupt file on my disk i can still
create/access other files or list the filenames without exception.
Please don't get me wrong, but its not obvious for me that a registry
behaves like that, but i can life with it. Sorry for the noise.
Stefan
> Jan
>
>> xenomai 2.5.3, linux 2.6.32.11, x86 32bit, ubuntu 10.04.
>>
>> Attached is the dmesg-trace and a small rtdm-module foo.c for reproduction:
>> insmod ./xeno_foo.ko
>> rmmod xeno_foo
>> insmod ./xeno_foo.ko -> oops
>>
>> thanks
>> stefan
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 251 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Xenomai-core] rtdm_dev_register oops
2010-05-18 13:42 ` Stefan Kisdaroczi
@ 2010-05-18 16:43 ` Jan Kiszka
0 siblings, 0 replies; 4+ messages in thread
From: Jan Kiszka @ 2010-05-18 16:43 UTC (permalink / raw)
To: Stefan Kisdaroczi; +Cc: xenomai
[-- Attachment #1: Type: text/plain, Size: 1413 bytes --]
Stefan Kisdaroczi wrote:
> Am 18.05.2010 13:03, schrieb Jan Kiszka:
>> Stefan Kisdaroczi wrote:
>>> hi,
>>>
>>> i got a exception in rtdm_dev_register(). I didnt call rtdm_dev_unregister in my driver
>>> and after insmodding the module again I got a oops.
>> And that is surprising to you? :)
>
> A bit.
>
>> If you leave the previous device registered on rmmod, oopses are
>> programmed to occur: You leave references to unallocated memory behind.
>
> If one device fails to unregister i can't register any other device anymore,
Then you have to find the bug that prevents proper deregistration.
> the rtdm registry is broken (cat /proc/xenomai/rtdm/names_devices hangs).
That hanging of /proc output is fixed in a series of mine that is yet
unmerged (as it is on hold, waiting for /proc infrastructure
refactorings by Philippe).
> That was surprising. If I have one corrupt file on my disk i can still
> create/access other files or list the filenames without exception.
If your filesystem hangs due to some bug of its own or in the underlying
layers, you won't be able to touch any further file on that system as well.
>
> Please don't get me wrong, but its not obvious for me that a registry
> behaves like that, but i can life with it. Sorry for the noise.
Again, the problem is that the deregistration hangs. That needs to be
understood and resolved.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-05-18 16:43 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-18 10:15 [Xenomai-core] rtdm_dev_register oops Stefan Kisdaroczi
2010-05-18 11:03 ` Jan Kiszka
2010-05-18 13:42 ` Stefan Kisdaroczi
2010-05-18 16:43 ` Jan Kiszka
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.