* [uml-devel] UML: Please help with __module_text_address crashing
@ 2012-03-13 22:38 Boaz Harrosh
2012-03-13 23:58 ` Richard Weinberger
0 siblings, 1 reply; 14+ messages in thread
From: Boaz Harrosh @ 2012-03-13 22:38 UTC (permalink / raw)
To: Richard Weinberger, uml-devel
Since a while now my UMLs are constantly crashing in __module_text_address
which makes no sense because if I do gdb> list *(__module_text_address+0xd)
I get:
0x6005614e is in __module_text_address (/media/usr0/export/dev/bharrosh/git/pub/linux-open-osd/kernel/module.c:3469).
3464 * module doesn't get freed during this.
3465 */
3466 struct module *__module_text_address(unsigned long addr)
3467 {
3468 struct module *mod = __module_address(addr);
3469 if (mod) {
3470 /* Make sure it's within the text section. */
3471 if (!within(addr, mod->module_init, mod->init_text_size)
3472 && !within(addr, mod->module_core, mod->core_text_size))
3473 mod = NULL;
It can not be crashing in line 3469, I suspect it's crashing inside __module_address(addr); at line 3468
Below it's crashing as part of the console operation, which is the most common one, but it can crash in
__module_text_address as part of other stack traces like networking and so on. From my feel it's always
related to some UML driver that actually operates as part of the host. But I can't be sure.
I'm running with 3.3-rc4 but I'm hit with this since 3.0, I tried to bisect
this at the time, but I found out that I could not find a perfectly good point
even as far as 3.6.37. So I suspected there is something wrong with my uml-image file
or my host. But now I upgraded both host and image to FC15 (was FC12/FC13) and I get
the same exact crashes. It came to a situation that I can't complete any kind
of heavy operation anymore and have abandoned UML for VMS for now. But I'm
very sorry to see UML go.
Can anyone help me with some insight on what I should try, to debug this thing.
BTW:
How to debug UML under gdb, it forks like mad and if I do:
gdb> set detach-on-fork off
It will just freeze. And if I do
gdb> attach <some-vmlinux-child-process>
(Try to attach to any but the top parent process)
Will return "access not permitted". I guess UML is a debugger of sorts and it can't be
double debugged.
Thanks
Boaz
Kernel panic - not syncing: Kernel mode fault at addr 0x54, ip 0x6015c233
Modules linked in: md5 objlayoutdriver nfsd exofs exportfs libore async_xor async_tx xor cryptomgr aead crc32c crypto_hash crypto_algapi iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi osd scsi_mod libosd nfs lockd auth_rpcgss nfs_acl sunrpc ipv6 [last unloaded: scsi_wait_scan]
Pid: 1223, comm: bash Not tainted 3.3.0-rc4-pnfs+
RIP: 0033:[<000000387aed78a3>]
RSP: 0000007fbfee78c8 EFLAGS: 00000206
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: ffffffffffffffff
RDX: 0000007fbfee7890 RSI: 0000000000005403 RDI: 0000000000000000
RBP: 0000000000000000 R08: 0000007fbfee7940 R09: 0000000000000010
R10: 0000000000000000 R11: 0000000000000206 R12: 0000000000000002
R13: 00000000000000c8 R14: 0000000000000000 R15: 0000000000000000
Call Trace:
602ab598: [<6001697c>] panic_exit+0x2f/0x45
602ab5b8: [<60046678>] notifier_call_chain+0x32/0x5e
602ab5e8: [<6015c233>] do_raw_spin_lock+0x12/0xdb
602ab5f8: [<600466c6>] atomic_notifier_call_chain+0x13/0x15
602ab608: [<601e90a4>] panic+0x112/0x1ea
602ab640: [<6015c233>] do_raw_spin_lock+0x12/0xdb
602ab660: [<6005614e>] __module_text_address+0xd/0x56
602ab678: [<60059324>] is_module_text_address+0x9/0x11
602ab688: [<6004019b>] __kernel_text_address+0x21/0x47
602ab6a8: [<600154de>] show_trace+0x8e/0x95
602ab6b0: [<6015c233>] do_raw_spin_lock+0x12/0xdb
602ab6d8: [<60028683>] show_regs+0x2b/0x30
602ab6f8: [<6015c233>] do_raw_spin_lock+0x12/0xdb
602ab708: [<60016713>] segv_handler+0x0/0x81
602ab718: [<600603d1>] handle_irq_event_percpu+0xfd/0x119
602ab758: [<6006300f>] rcu_sched_qs+0x74/0x79
602ab7d8: [<6001678a>] segv_handler+0x77/0x81
602ab808: [<60013c26>] sigio_handler+0x58/0x5d
602ab828: [<60023e9d>] sig_handler_common+0x84/0x98
602ab890: [<60018efc>] line_chars_in_buffer+0x0/0x4c
602ab8b0: [<6015c233>] do_raw_spin_lock+0x12/0xdb
602ab8d0: [<60016fe8>] virt_to_pte+0x4a/0x6a
602ab928: [<6001141c>] _einittext+0x1a0d/0x2c91
602ab938: [<60010760>] _einittext+0xd51/0x2c91
602aba18: [<6001141c>] _einittext+0x1a0d/0x2c91
602abb58: [<60023f8d>] sig_handler+0x2d/0x38
602abb78: [<60023bc3>] hard_handler+0x6b/0x9d
602abc48: [<60018efc>] line_chars_in_buffer+0x0/0x4c
602abc68: [<6015c233>] do_raw_spin_lock+0x12/0xdb
------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-13 22:38 [uml-devel] UML: Please help with __module_text_address crashing Boaz Harrosh @ 2012-03-13 23:58 ` Richard Weinberger 2012-03-14 0:15 ` Boaz Harrosh 2012-03-14 7:28 ` Stian Skjelstad 0 siblings, 2 replies; 14+ messages in thread From: Richard Weinberger @ 2012-03-13 23:58 UTC (permalink / raw) To: Boaz Harrosh; +Cc: uml-devel Am 13.03.2012 23:38, schrieb Boaz Harrosh: > Since a while now my UMLs are constantly crashing in __module_text_address > > which makes no sense because if I do gdb> list *(__module_text_address+0xd) > I get: > > 0x6005614e is in __module_text_address (/media/usr0/export/dev/bharrosh/git/pub/linux-open-osd/kernel/module.c:3469). > 3464 * module doesn't get freed during this. > 3465 */ > 3466 struct module *__module_text_address(unsigned long addr) > 3467 { > 3468 struct module *mod = __module_address(addr); > 3469 if (mod) { > 3470 /* Make sure it's within the text section. */ > 3471 if (!within(addr, mod->module_init, mod->init_text_size) > 3472&& !within(addr, mod->module_core, mod->core_text_size)) > 3473 mod = NULL; > > It can not be crashing in line 3469, I suspect it's crashing inside __module_address(addr); at line 3468 > > Below it's crashing as part of the console operation, which is the most common one, but it can crash in > __module_text_address as part of other stack traces like networking and so on. From my feel it's always > related to some UML driver that actually operates as part of the host. But I can't be sure. > > I'm running with 3.3-rc4 but I'm hit with this since 3.0, I tried to bisect > this at the time, but I found out that I could not find a perfectly good point > even as far as 3.6.37. So I suspected there is something wrong with my uml-image file > or my host. But now I upgraded both host and image to FC15 (was FC12/FC13) and I get > the same exact crashes. It came to a situation that I can't complete any kind > of heavy operation anymore and have abandoned UML for VMS for now. But I'm > very sorry to see UML go. > > Can anyone help me with some insight on what I should try, to debug this thing. > What exactly triggers the crash? IOW, how can I reproduce it? > BTW: > How to debug UML under gdb, it forks like mad and if I do: > gdb> set detach-on-fork off > It will just freeze. And if I do > gdb> attach<some-vmlinux-child-process> > (Try to attach to any but the top parent process) > Will return "access not permitted". I guess UML is a debugger of sorts and it can't be > double debugged. e.g: $ gdb linux (gdb) handle SIGSEGV noprint nostop pass (gdb) set args <your kernel args> (gdb) run UML "forks like mad" because it creates an thread for each process within UML... Thanks, //richard ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-13 23:58 ` Richard Weinberger @ 2012-03-14 0:15 ` Boaz Harrosh 2012-03-14 0:22 ` Richard Weinberger 2012-03-14 7:28 ` Stian Skjelstad 1 sibling, 1 reply; 14+ messages in thread From: Boaz Harrosh @ 2012-03-14 0:15 UTC (permalink / raw) To: Richard Weinberger; +Cc: uml-devel On 03/13/2012 04:58 PM, Richard Weinberger wrote: > > What exactly triggers the crash? > IOW, how can I reproduce it? > It's totally random, but always the same crash. I guess if you don't have it then you don't. The most reliable way for me to get it is a simple "halt". I'm not able to ever shut down properly it reliably crashes like: Kernel panic - not syncing: Kernel mode fault at addr 0x54, ip 0x6015c233 Modules linked in: nfs lockd auth_rpcgss nfs_acl sunrpc ipv6 [last unloaded: scsi_wait_scan] Pid: 1210, comm: autofs Not tainted 3.3.0-rc4-pnfs+ RIP: 0033:[<000000387aed28d0>] RSP: 0000007fbf9876d8 EFLAGS: 00000246 RAX: ffffffffffffffda RBX: 0000000000000001 RCX: ffffffffffffffff RDX: 0000000000000001 RSI: 0000000040008000 RDI: 0000000000000001 RBP: 0000000040008000 R08: 00000000ffffffff R09: 0000000000000001 R10: 0000000000000000 R11: 0000000000000246 R12: 000000387b1928e0 R13: 0000000000000001 R14: 000000000093eb80 R15: 000000000093eb80 Call Trace: 602ab598: [<6001697c>] panic_exit+0x2f/0x45 602ab5b8: [<60046678>] notifier_call_chain+0x32/0x5e 602ab5e8: [<6015c233>] do_raw_spin_lock+0x12/0xdb 602ab5f8: [<600466c6>] atomic_notifier_call_chain+0x13/0x15 602ab608: [<601e90a4>] panic+0x112/0x1ea 602ab640: [<6015c233>] do_raw_spin_lock+0x12/0xdb 602ab660: [<6005614e>] __module_text_address+0xd/0x56 602ab678: [<60059324>] is_module_text_address+0x9/0x11 602ab688: [<6004019b>] __kernel_text_address+0x21/0x47 602ab6a8: [<600154de>] show_trace+0x8e/0x95 602ab6b0: [<6015c233>] do_raw_spin_lock+0x12/0xdb 602ab6d8: [<60028683>] show_regs+0x2b/0x30 602ab6f8: [<6015c233>] do_raw_spin_lock+0x12/0xdb 602ab708: [<60016713>] segv_handler+0x0/0x81 602ab718: [<600603d1>] handle_irq_event_percpu+0xfd/0x119 602ab758: [<6006300f>] rcu_sched_qs+0x74/0x79 602ab7d8: [<6001678a>] segv_handler+0x77/0x81 602ab808: [<60013c26>] sigio_handler+0x58/0x5d 602ab828: [<60023e9d>] sig_handler_common+0x84/0x98 602ab890: [<60018eb8>] line_write_room+0x0/0x44 602ab8b0: [<6015c233>] do_raw_spin_lock+0x12/0xdb 602ab8d0: [<6015435a>] prio_tree_insert+0x4c/0x23b 602ab928: [<6001141c>] _einittext+0x1a0d/0x2c91 602ab938: [<60010760>] _einittext+0xd51/0x2c91 602aba18: [<6001141c>] _einittext+0x1a0d/0x2c91 602abb58: [<60023f8d>] sig_handler+0x2d/0x38 602abb78: [<60023bc3>] hard_handler+0x6b/0x9d 602abc48: [<60018eb8>] line_write_room+0x0/0x44 602abc68: [<6015c233>] do_raw_spin_lock+0x12/0xdb I'd give anything to get your setup that works. Though I have everything by the letter: - Newly installed FC15 host - Copied over FC15 image from a KVM with the tty0 /etc fixes. - commandline: ./vmlinux ubd0=Fedora15-AMD64-root_fs-1 ubd1=swap_file-1 eth0=tuntap,,,172.17.132.231 mem=384M It'll crash every time >> BTW: >> How to debug UML under gdb, it forks like mad and if I do: >> gdb> set detach-on-fork off >> It will just freeze. And if I do >> gdb> attach<some-vmlinux-child-process> >> (Try to attach to any but the top parent process) >> Will return "access not permitted". I guess UML is a debugger of sorts and it can't be >> double debugged. > > e.g: > $ gdb linux > (gdb) handle SIGSEGV noprint nostop pass > (gdb) set args <your kernel args> > (gdb) run > > UML "forks like mad" because it creates an thread for each process > within UML... > OK then I have a problem because I get the "access not permitted" on attaching to any of these forks but the top most parent. (as sudo) > Thanks, > //richard Thanks for your reply Boaz ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-14 0:15 ` Boaz Harrosh @ 2012-03-14 0:22 ` Richard Weinberger 2012-03-14 0:51 ` Boaz Harrosh 0 siblings, 1 reply; 14+ messages in thread From: Richard Weinberger @ 2012-03-14 0:22 UTC (permalink / raw) To: Boaz Harrosh; +Cc: uml-devel Am 14.03.2012 01:15, schrieb Boaz Harrosh: > I guess if you don't have it then you don't. The most reliable way for me to get > it is a simple "halt". I'm not able to ever shut down properly it reliably crashes > like: > > Kernel panic - not syncing: Kernel mode fault at addr 0x54, ip 0x6015c233 What is at addr 0x6015c233? "addr2line -e vmlinux 0x6015c233" shows it. Does it also happen with a vanilla kernel? > > OK then I have a problem because I get the "access not permitted" on attaching to any of these > forks but the top most parent. (as sudo) You cannot attach to them because they are already being ptrace()'ed by the UML main thread. Thanks, //richard ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-14 0:22 ` Richard Weinberger @ 2012-03-14 0:51 ` Boaz Harrosh 2012-03-14 8:23 ` Richard Weinberger 0 siblings, 1 reply; 14+ messages in thread From: Boaz Harrosh @ 2012-03-14 0:51 UTC (permalink / raw) To: Richard Weinberger; +Cc: uml-devel On 03/13/2012 05:22 PM, Richard Weinberger wrote: > Am 14.03.2012 01:15, schrieb Boaz Harrosh: >> I guess if you don't have it then you don't. The most reliable way for me to get >> it is a simple "halt". I'm not able to ever shut down properly it reliably crashes >> like: >> >> Kernel panic - not syncing: Kernel mode fault at addr 0x54, ip 0x6015c233 > > What is at addr 0x6015c233? > "addr2line -e vmlinux 0x6015c233" shows it. > linux-open-osd/arch/um/drivers/line.c:46 > Does it also happen with a vanilla kernel? > Yes, you mean git checkout v3.2 Yes it's the same all the way back to 2.6.39 or so I just did that I get the same as above: addr2line -e .build_um/vmlinux 0x600179b8 linux-open-osd/arch/um/drivers/line.c:46 >> >> OK then I have a problem because I get the "access not permitted" on attaching to any of these >> forks but the top most parent. (as sudo) > > You cannot attach to them because they are already being ptrace()'ed by > the UML main thread. right that what I thought. so if I make a break point that happened in another fork will it trigger still? I guess yes. But if anything goes wrong in any of the other forks, is there a way for me to break that fork into the debugger and see what happened like a bt? My current theory is that Fedora became UML unfriendly is there some random-exec-mem thingy I need to turn off? > > Thanks, > //richard Thanks richard for your help Boaz ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-14 0:51 ` Boaz Harrosh @ 2012-03-14 8:23 ` Richard Weinberger 2012-03-14 22:28 ` Boaz Harrosh 0 siblings, 1 reply; 14+ messages in thread From: Richard Weinberger @ 2012-03-14 8:23 UTC (permalink / raw) To: Boaz Harrosh; +Cc: uml-devel Am 14.03.2012 01:51, schrieb Boaz Harrosh: > Yes, you mean git checkout v3.2 Yes it's the same all the way back to 2.6.39 or so > > I just did that I get the same as above: addr2line -e .build_um/vmlinux 0x600179b8 > linux-open-osd/arch/um/drivers/line.c:46 Please give this patch a try: https://lkml.org/lkml/2012/3/10/163 > My current theory is that Fedora became UML unfriendly is there some random-exec-mem thingy > I need to turn off? > No. UML tty driver is broken like hell and newer distors seem to trigger it. I thought only Fc16 with systemd is affected. But as you using Fc15, I was wrong... Thanks, //richard ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-14 8:23 ` Richard Weinberger @ 2012-03-14 22:28 ` Boaz Harrosh 2012-03-14 22:40 ` Richard Weinberger 0 siblings, 1 reply; 14+ messages in thread From: Boaz Harrosh @ 2012-03-14 22:28 UTC (permalink / raw) To: Richard Weinberger; +Cc: uml-devel On 03/14/2012 01:23 AM, Richard Weinberger wrote: > Am 14.03.2012 01:51, schrieb Boaz Harrosh: >> Yes, you mean git checkout v3.2 Yes it's the same all the way back to 2.6.39 or so >> >> I just did that I get the same as above: addr2line -e .build_um/vmlinux 0x600179b8 >> linux-open-osd/arch/um/drivers/line.c:46 > > Please give this patch a try: > https://lkml.org/lkml/2012/3/10/163 > Yes with this patch I'm not crashing with halt anymore. Cheers. Let me test some more and see if I have other problems. I crashed once in some networking stack-trace but did not save it, let me see play with it some more. But surly it needs to go upstream. I'll run with it out of tree for now. >> My current theory is that Fedora became UML unfriendly is there some random-exec-mem thingy >> I need to turn off? >> > > No. UML tty driver is broken like hell and newer distors seem to trigger it. > I thought only Fc16 with systemd is affected. But as you using Fc15, I > was wrong... > I have an administrative question. (If I may). This came up now with my FC15 setups. (I did not have these problem with my old FC12 setup) In a default setup (make defconfig) I have: CONFIG_XTERM_CHAN=y CONFIG_CON_CHAN=xterm If I leave it at that then very early in the boot an xterm X11 window comes up the terminal is on the host (I see my host name and environment, not the UML one) and the boot process just stops. Even if I close the window the boot is just stuck I can only do "sudo killall vmlinux" from the host. If I change "CONFIG_CON_CHAN not set" or just "CONFIG_CON_CHAN=nothing" then the boot process complains but continues to a login prompt like I use to. Do you know how to fix that? Also in vi, it thinks I only have 25 lines. Do you know in FC where I say console have more lines, or better yet auto adopt to my host console. I guess it might be related to my first Q. I did not use to have these problems with my old setup > Thanks, > //richard Thanks a million, for being so patient with me Boaz ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-14 22:28 ` Boaz Harrosh @ 2012-03-14 22:40 ` Richard Weinberger 2012-05-25 7:35 ` Boaz Harrosh 0 siblings, 1 reply; 14+ messages in thread From: Richard Weinberger @ 2012-03-14 22:40 UTC (permalink / raw) To: Boaz Harrosh; +Cc: uml-devel Am 14.03.2012 23:28, schrieb Boaz Harrosh: > But surly it needs to go upstream. I'll run with it out of tree for now. As of now it's not ready for upstream. I'll submit it as -stable patch as soon as possible. > I have an administrative question. (If I may). This came up now with my FC15 > setups. (I did not have these problem with my old FC12 setup) > > In a default setup (make defconfig) I have: > > CONFIG_XTERM_CHAN=y > CONFIG_CON_CHAN=xterm > > If I leave it at that then very early in the boot an xterm X11 window comes up > the terminal is on the host (I see my host name and environment, not the UML one) > and the boot process just stops. Even if I close the window the boot is just stuck > I can only do "sudo killall vmlinux" from the host. > > If I change "CONFIG_CON_CHAN not set" or just "CONFIG_CON_CHAN=nothing" then the > boot process complains but continues to a login prompt like I use to. > > Do you know how to fix that? > > Also in vi, it thinks I only have 25 lines. Do you know in FC where I say console > have more lines, or better yet auto adopt to my host console. I guess it might be > related to my first Q. I did not use to have these problems with my old setup This is most likely because tty has still some problems. Can you please provide the exact kernel command line and output? Thanks, //richard ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-14 22:40 ` Richard Weinberger @ 2012-05-25 7:35 ` Boaz Harrosh 2012-05-25 7:40 ` Richard RW. Weinberger 0 siblings, 1 reply; 14+ messages in thread From: Boaz Harrosh @ 2012-05-25 7:35 UTC (permalink / raw) To: Richard Weinberger; +Cc: uml-devel [-- Attachment #1: Type: text/plain, Size: 620 bytes --] On 03/15/2012 12:40 AM, Richard Weinberger wrote: > Am 14.03.2012 23:28, schrieb Boaz Harrosh: >> But surly it needs to go upstream. I'll run with it out of tree for now. > > As of now it's not ready for upstream. > I'll submit it as -stable patch as soon as possible. > Richard hi, I've been running with your tty patch for a while now, and was able to work. 3.3 Kernel Now based on 3.4 tree the patch no longer merges, too many changes. But am back to the same crashes as before. Do you have a rough patch for 3.4 base I can use. Attached is the original patch good for 3.3 based tree. Thanks in advance Boaz [-- Attachment #2: 0001-TTY-tty_port-questions.patch --] [-- Type: text/plain, Size: 12482 bytes --] From b69b3ee7a4e6c745a711777a9f9492977e95d063 Mon Sep 17 00:00:00 2001 From: Richard Weinberger <R@W,org> Date: Wed, 14 Mar 2012 11:46:36 -0700 Subject: [PATCH] TTY: tty_port questions Hi! While moving UML's console driver to tty_port some strange things happened. So, I have a few questions. :-) The original driver did not implement tty_operations->hangup(). If I implement it and call tty_port_hangup(), as Alan suggested, the login fails on all TTYs except tty0. It fails because the opened TTY returns EIO upon read()/write() after /bin/login called vhangup(). The call chain is: vhangup() -> tty_vhangup_self() -> tty_vhangup() -> __tty_hangup() Within __tty_hangup() something happens that I don't fully understand: if (cons_filp) { if (tty->ops->close) for (n = 0; n < closecount; n++) tty->ops->close(tty, cons_filp); } else if (tty->ops->hangup) (tty->ops->hangup)(tty); Login on tty0 works because cons_filp is not NULL and tty->ops->close() is called. On the other hand login fails on every other TTY because cons_filp remains NULL and the TTY hangs up. Is there something missing in my hangup function? If I omit tty_operations->hangup() and leave it, like the old driver, NULL non-tty0 TTYs cannot be opened. (getty terminates immediately because it cannot open any TTY.) open() retuns -EIO because the TTY_CLOSING is set in tty->flags. How can this be? Another fun fact is that the above noted problems do not happen on Debian. Because Debian's /bin/login does not call vhangup(). Thanks, //richard -- --- arch/um/drivers/line.c | 150 ++++++++++++++++++++-------------------- arch/um/drivers/line.h | 13 ++-- arch/um/drivers/ssl.c | 23 +++--- arch/um/drivers/stdio_console.c | 10 ++- 4 files changed, 101 insertions(+), 95 deletions(-) diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index c1cf220..24de04c 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c @@ -19,19 +19,29 @@ static irqreturn_t line_interrupt(int irq, void *data) { struct chan *chan = data; struct line *line = chan->line; + struct tty_struct *tty; + + if (line) { + tty = tty_port_tty_get(&line->port); + chan_interrupt(&line->chan_list, &line->task, tty, irq); + tty_kref_put(tty); + } - if (line) - chan_interrupt(&line->chan_list, &line->task, line->tty, irq); return IRQ_HANDLED; } static void line_timer_cb(struct work_struct *work) { struct line *line = container_of(work, struct line, task.work); + struct tty_struct *tty; - if (!line->throttled) - chan_interrupt(&line->chan_list, &line->task, line->tty, + if (!line->throttled) { + tty = tty_port_tty_get(&line->port); + chan_interrupt(&line->chan_list, &line->task, tty, line->driver->read_irq); + + tty_kref_put(tty); + } } /* @@ -343,7 +353,7 @@ static irqreturn_t line_write_interrupt(int irq, void *data) { struct chan *chan = data; struct line *line = chan->line; - struct tty_struct *tty = line->tty; + struct tty_struct *tty = tty_port_tty_get(&line->port); int err; /* @@ -354,6 +364,7 @@ static irqreturn_t line_write_interrupt(int irq, void *data) spin_lock(&line->lock); err = flush_buffer(line); if (err == 0) { + tty_kref_put(tty); return IRQ_NONE; } else if (err < 0) { line->head = line->buffer; @@ -365,9 +376,36 @@ static irqreturn_t line_write_interrupt(int irq, void *data) return IRQ_NONE; tty_wakeup(tty); + tty_kref_put(tty); return IRQ_HANDLED; } +static int line_activate(struct tty_port *port, struct tty_struct *tty) +{ + int ret; + struct line *line = tty->driver_data; + + ret = enable_chan(line); + if (ret) + return ret; + + INIT_DELAYED_WORK(&line->task, line_timer_cb); + + if (!line->sigio) { + chan_enable_winch(&line->chan_list, tty); + line->sigio = 1; + } + + chan_window_size(&line->chan_list, &tty->winsize.ws_row, + &tty->winsize.ws_col); + + return 0; +} + +static const struct tty_port_operations line_port_ops = { + .activate = line_activate, +}; + int line_setup_irq(int fd, int input, int output, struct line *line, void *data) { const struct line_driver *driver = line->driver; @@ -404,81 +442,49 @@ int line_setup_irq(int fd, int input, int output, struct line *line, void *data) * first open or last close. Otherwise, open and close just return. */ -int line_open(struct line *lines, struct tty_struct *tty) +int line_open(struct tty_struct *tty, struct file *filp) { - struct line *line = &lines[tty->index]; - int err = -ENODEV; + struct line *line = tty->driver_data; + return tty_port_open(&line->port, tty, filp); +} - spin_lock(&line->count_lock); - if (!line->valid) - goto out_unlock; +int line_install(struct tty_driver *driver, struct tty_struct *tty, struct line *line) +{ + int ret = tty_init_termios(tty); + if (ret) + return ret; - err = 0; - if (line->count++) - goto out_unlock; + tty_driver_kref_get(driver); + tty->count++; + driver->ttys[tty->index] = tty; - BUG_ON(tty->driver_data); tty->driver_data = line; - line->tty = tty; - - spin_unlock(&line->count_lock); - err = enable_chan(line); - if (err) /* line_close() will be called by our caller */ - return err; - - INIT_DELAYED_WORK(&line->task, line_timer_cb); - - if (!line->sigio) { - chan_enable_winch(&line->chan_list, tty); - line->sigio = 1; - } - - chan_window_size(&line->chan_list, &tty->winsize.ws_row, - &tty->winsize.ws_col); return 0; - -out_unlock: - spin_unlock(&line->count_lock); - return err; } static void unregister_winch(struct tty_struct *tty); -void line_close(struct tty_struct *tty, struct file * filp) +void line_cleanup(struct tty_struct *tty) { struct line *line = tty->driver_data; - /* - * If line_open fails (and tty->driver_data is never set), - * tty_open will call line_close. So just return in this case. - */ - if (line == NULL) - return; - - /* We ignore the error anyway! */ - flush_buffer(line); - - spin_lock(&line->count_lock); - BUG_ON(!line->valid); - - if (--line->count) - goto out_unlock; - - line->tty = NULL; - tty->driver_data = NULL; - - spin_unlock(&line->count_lock); - if (line->sigio) { unregister_winch(tty); line->sigio = 0; } +} - return; +void line_close(struct tty_struct *tty, struct file * filp) +{ + struct line *line = tty->driver_data; + tty_port_close(&line->port, tty, filp); +} -out_unlock: - spin_unlock(&line->count_lock); +void line_hangup(struct tty_struct *tty) +{ + struct line *line = tty->driver_data; + tty_port_hangup(&line->port); } void close_lines(struct line *lines, int nlines) @@ -495,13 +501,6 @@ static int setup_one_line(struct line *lines, int n, char *init, int init_prio, struct line *line = &lines[n]; int err = -EINVAL; - spin_lock(&line->count_lock); - - if (line->count) { - *error_out = "Device is already open"; - goto out; - } - if (line->init_pri <= init_prio) { line->init_pri = init_prio; if (!strcmp(init, "none")) @@ -512,8 +511,7 @@ static int setup_one_line(struct line *lines, int n, char *init, int init_prio, } } err = 0; -out: - spin_unlock(&line->count_lock); + return err; } @@ -598,6 +596,7 @@ int line_get_config(char *name, struct line *lines, unsigned int num, char *str, struct line *line; char *end; int dev, n = 0; + struct tty_struct *tty; dev = simple_strtoul(name, &end, 0); if ((*end != '\0') || (end == name)) { @@ -612,13 +611,15 @@ int line_get_config(char *name, struct line *lines, unsigned int num, char *str, line = &lines[dev]; - spin_lock(&line->count_lock); + tty = tty_port_tty_get(&line->port); + if (!line->valid) CONFIG_CHUNK(str, size, n, "none", 1); - else if (line->tty == NULL) + else if (tty == NULL) CONFIG_CHUNK(str, size, n, line->init_str, 1); else n = chan_config_string(&line->chan_list, str, size, error_out); - spin_unlock(&line->count_lock); + + tty_kref_put(tty); return n; } @@ -678,8 +679,8 @@ struct tty_driver *register_lines(struct line_driver *line_driver, } for(i = 0; i < nlines; i++) { - if (!lines[i].valid) - tty_unregister_device(driver, i); + tty_port_init(&lines[i].port); + lines[i].port.ops = &line_port_ops; } mconsole_register_dev(&line_driver->mc); @@ -805,7 +806,6 @@ void register_winch_irq(int fd, int tty_fd, int pid, struct tty_struct *tty, .pid = pid, .tty = tty, .stack = stack }); - if (um_request_irq(WINCH_IRQ, fd, IRQ_READ, winch_interrupt, IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, "winch", winch) < 0) { diff --git a/arch/um/drivers/line.h b/arch/um/drivers/line.h index 63df3ca..54adfc6 100644 --- a/arch/um/drivers/line.h +++ b/arch/um/drivers/line.h @@ -31,9 +31,8 @@ struct line_driver { }; struct line { - struct tty_struct *tty; - spinlock_t count_lock; - unsigned long count; + struct tty_port port; + int valid; char *init_str; @@ -59,15 +58,17 @@ struct line { }; #define LINE_INIT(str, d) \ - { .count_lock = __SPIN_LOCK_UNLOCKED((str).count_lock), \ - .init_str = str, \ + { .init_str = str, \ .init_pri = INIT_STATIC, \ .valid = 1, \ .lock = __SPIN_LOCK_UNLOCKED((str).lock), \ .driver = d } extern void line_close(struct tty_struct *tty, struct file * filp); -extern int line_open(struct line *lines, struct tty_struct *tty); +extern int line_open(struct tty_struct *tty, struct file *filp); +extern int line_install(struct tty_driver *driver, struct tty_struct *tty, struct line *line); +extern void line_cleanup(struct tty_struct *tty); +extern void line_hangup(struct tty_struct *tty); extern int line_setup(struct line *lines, unsigned int sizeof_lines, char *init, char **error_out); extern int line_write(struct tty_struct *tty, const unsigned char *buf, diff --git a/arch/um/drivers/ssl.c b/arch/um/drivers/ssl.c index 9d8c20a..89fdecb 100644 --- a/arch/um/drivers/ssl.c +++ b/arch/um/drivers/ssl.c @@ -92,17 +92,6 @@ static int ssl_remove(int n, char **error_out) error_out); } -static int ssl_open(struct tty_struct *tty, struct file *filp) -{ - int err = line_open(serial_lines, tty); - - if (err) - printk(KERN_ERR "Failed to open serial line %d, err = %d\n", - tty->index, err); - - return err; -} - #if 0 static void ssl_flush_buffer(struct tty_struct *tty) { @@ -124,8 +113,13 @@ void ssl_hangup(struct tty_struct *tty) } #endif +static int ssl_install(struct tty_driver *driver, struct tty_struct *tty) +{ + return line_install(driver, tty, &serial_lines[tty->index]); +} + static const struct tty_operations ssl_ops = { - .open = ssl_open, + .open = line_open, .close = line_close, .write = line_write, .put_char = line_put_char, @@ -134,9 +128,12 @@ static const struct tty_operations ssl_ops = { .flush_buffer = line_flush_buffer, .flush_chars = line_flush_chars, .set_termios = line_set_termios, - .ioctl = line_ioctl, + .ioctl = line_ioctl, .throttle = line_throttle, .unthrottle = line_unthrottle, + .install = ssl_install, + .cleanup = line_cleanup, + .hangup = line_hangup, #if 0 .stop = ssl_stop, .start = ssl_start, diff --git a/arch/um/drivers/stdio_console.c b/arch/um/drivers/stdio_console.c index 088776f..4c78c78 100644 --- a/arch/um/drivers/stdio_console.c +++ b/arch/um/drivers/stdio_console.c @@ -97,7 +97,7 @@ static int con_remove(int n, char **error_out) static int con_open(struct tty_struct *tty, struct file *filp) { - int err = line_open(vts, tty); + int err = line_open(tty, filp); if (err) printk(KERN_ERR "Failed to open console %d, err = %d\n", tty->index, err); @@ -105,11 +105,17 @@ static int con_open(struct tty_struct *tty, struct file *filp) return err; } +static int con_install(struct tty_driver *driver, struct tty_struct *tty) +{ + return line_install(driver, tty, &vts[tty->index]); +} + /* Set in an initcall, checked in an exitcall */ static int con_init_done = 0; static const struct tty_operations console_ops = { .open = con_open, + .install = con_install, .close = line_close, .write = line_write, .put_char = line_put_char, @@ -121,6 +127,8 @@ static const struct tty_operations console_ops = { .ioctl = line_ioctl, .throttle = line_throttle, .unthrottle = line_unthrottle, + .cleanup = line_cleanup, + .hangup = line_hangup, }; static void uml_console_write(struct console *console, const char *string, -- 1.7.10.2.677.gb6bc67f [-- Attachment #3: Type: text/plain, Size: 395 bytes --] ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ [-- Attachment #4: Type: text/plain, Size: 194 bytes --] _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-05-25 7:35 ` Boaz Harrosh @ 2012-05-25 7:40 ` Richard RW. Weinberger 2012-05-25 9:19 ` Boaz Harrosh 0 siblings, 1 reply; 14+ messages in thread From: Richard RW. Weinberger @ 2012-05-25 7:40 UTC (permalink / raw) To: Boaz Harrosh; +Cc: Richard Weinberger, uml-devel ----- Ursprüngliche Mail ----- > I've been running with your tty patch for a while now, and was able > to work. 3.3 Kernel > > Now based on 3.4 tree the patch no longer merges, too many changes. > But am back to the same crashes as before. Do you have a rough > patch for 3.4 base I can use. Okay, I'll send an updated version. Currently the tty sub-system is heavily changed. Thanks, //richard ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-05-25 7:40 ` Richard RW. Weinberger @ 2012-05-25 9:19 ` Boaz Harrosh 2012-05-25 9:26 ` Richard Weinberger 0 siblings, 1 reply; 14+ messages in thread From: Boaz Harrosh @ 2012-05-25 9:19 UTC (permalink / raw) To: Richard RW. Weinberger; +Cc: Weinberger, Richard, uml-devel On 05/25/2012 10:40 AM, Richard RW. Weinberger wrote: > ----- Ursprüngliche Mail ----- >> I've been running with your tty patch for a while now, and was able >> to work. 3.3 Kernel >> >> Now based on 3.4 tree the patch no longer merges, too many changes. >> But am back to the same crashes as before. Do you have a rough >> patch for 3.4 base I can use. > > Okay, I'll send an updated version. > Currently the tty sub-system is heavily changed. > Thanks. Yes I noticed bunch of stuff moved around nothing trivial that I could fix > Thanks, > //richard Whats keeping this patch from hitting mainline? to much ugliness? Is there a way to work without it (somehow) Thanks Boaz ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-05-25 9:19 ` Boaz Harrosh @ 2012-05-25 9:26 ` Richard Weinberger 0 siblings, 0 replies; 14+ messages in thread From: Richard Weinberger @ 2012-05-25 9:26 UTC (permalink / raw) To: Boaz Harrosh; +Cc: uml-devel On 25.05.2012 11:19, Boaz Harrosh wrote: > Whats keeping this patch from hitting mainline? to much ugliness? > Is there a way to work without it (somehow) > UML's tty driver is a corner case. (It is a console but does not support virtual consoles, etc...) TTY folks are currently moving most drivers to the new tty_port interface. UML has also to use tty_port. But as of writing of the my tty-patch tty_port was not fully ready for consoles. Anyway, I'll checkout what's the current state of tty_port is and rewrite UML's TTY mess^Wdriver again. :) Thanks, //richard ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-13 23:58 ` Richard Weinberger 2012-03-14 0:15 ` Boaz Harrosh @ 2012-03-14 7:28 ` Stian Skjelstad 2012-03-14 8:44 ` Richard Weinberger 1 sibling, 1 reply; 14+ messages in thread From: Stian Skjelstad @ 2012-03-14 7:28 UTC (permalink / raw) To: Richard Weinberger; +Cc: uml-devel > Am 13.03.2012 23:38, schrieb Boaz Harrosh: >> Since a while now my UMLs are constantly crashing in >> __module_text_address >> >> which makes no sense because if I do gdb> list >> *(__module_text_address+0xd) >> I get:t >> >> 0x6005614e is in __module_text_address >> (/media/usr0/export/dev/bharrosh/git/pub/linux-open-osd/kernel/module.c:3469). >> 3464 * module doesn't get freed during this. >> 3465 */ >> 3466 struct module *__module_text_address(unsigned long addr) >> 3467 { >> 3468 struct module *mod = __module_address(addr); >> 3469 if (mod) { >> 3470 /* Make sure it's within the text section. */ >> 3471 if (!within(addr, mod->module_init, >> mod->init_text_size) >> 3472&& !within(addr, mod->module_core, mod->core_text_size)) >> 3473 mod = NULL; source listing vs where it crashes can be off aslong as you use CFLAGS with -On where n is greater than 0. So the first thing you can test is to compile UML with CFLAGS="-g -O0". It might be that it doesn't crash anymore then, if so, you can try to play with different gcc optimization flags in order to find out what triggers it. Other sources of the crash can be gcc bugs, or some special CPU optimization BUG (either in gcc or the UML source). Your backtrace also included spin-lock right before the panic, which could be the source of the issue. If I remember right, the kernel has some debug options that can be enabled for spin-locks. Stian Skjelstad ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [uml-devel] UML: Please help with __module_text_address crashing 2012-03-14 7:28 ` Stian Skjelstad @ 2012-03-14 8:44 ` Richard Weinberger 0 siblings, 0 replies; 14+ messages in thread From: Richard Weinberger @ 2012-03-14 8:44 UTC (permalink / raw) To: Stian Skjelstad; +Cc: uml-devel On 14.03.2012 08:28, Stian Skjelstad wrote: >> Am 13.03.2012 23:38, schrieb Boaz Harrosh: >>> Since a while now my UMLs are constantly crashing in >>> __module_text_address >>> >>> which makes no sense because if I do gdb> list >>> *(__module_text_address+0xd) >>> I get:t >>> >>> 0x6005614e is in __module_text_address >>> (/media/usr0/export/dev/bharrosh/git/pub/linux-open-osd/kernel/module.c:3469). >>> 3464 * module doesn't get freed during this. >>> 3465 */ >>> 3466 struct module *__module_text_address(unsigned long addr) >>> 3467 { >>> 3468 struct module *mod = __module_address(addr); >>> 3469 if (mod) { >>> 3470 /* Make sure it's within the text section. */ >>> 3471 if (!within(addr, mod->module_init, >>> mod->init_text_size) >>> 3472&& !within(addr, mod->module_core, mod->core_text_size)) >>> 3473 mod = NULL; > > source listing vs where it crashes can be off aslong as you use CFLAGS > with -On where n is greater than 0. So the first thing you can test is to > compile UML with CFLAGS="-g -O0". It might be that it doesn't crash > anymore then, if so, you can try to play with different gcc optimization > flags in order to find out what triggers it. Building the kernel with -O0 is also dangerous. It relies on the fact that some functions need to be inlined in any case. Thanks, //richard ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2012-05-25 9:27 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-03-13 22:38 [uml-devel] UML: Please help with __module_text_address crashing Boaz Harrosh 2012-03-13 23:58 ` Richard Weinberger 2012-03-14 0:15 ` Boaz Harrosh 2012-03-14 0:22 ` Richard Weinberger 2012-03-14 0:51 ` Boaz Harrosh 2012-03-14 8:23 ` Richard Weinberger 2012-03-14 22:28 ` Boaz Harrosh 2012-03-14 22:40 ` Richard Weinberger 2012-05-25 7:35 ` Boaz Harrosh 2012-05-25 7:40 ` Richard RW. Weinberger 2012-05-25 9:19 ` Boaz Harrosh 2012-05-25 9:26 ` Richard Weinberger 2012-03-14 7:28 ` Stian Skjelstad 2012-03-14 8:44 ` Richard Weinberger
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.