About this list Date view Thread view Subject view Author view Attachment view

From: Herbert Poetzl (herbert_at_13thfloor.at)
Date: Thu 16 Sep 2004 - 14:32:59 BST


On Thu, Sep 16, 2004 at 10:24:31AM -0300, James MacLean wrote:
> Herbert Poetzl wrote:
>
> >On Wed, Sep 15, 2004 at 09:53:50PM -0300, James MacLean wrote:
> >>Herbert Poetzl wrote:
> >>>On Wed, Sep 15, 2004 at 08:28:43PM -0300, James MacLean wrote:
> >>>>Herbert Poetzl wrote:
> >>>>>>>>Don't hold your breath :(. Can not find a null modem and cables :(.
> >>>>>>>>Plus the test box is down and didn't auto reboot this time so I'm
> >>>>>>>>sending someone in to revive it :).
> >>>>>I can wait ;) ...
> >>>>>
> >>>>>best,
> >>>>>Herbert
> >>>>JES
> >>>Hi James!
> >>>
> >>>okay, could you put the EIP address through addr2line
> >>>with 'addr2line -e vmlinux c02ae990' and see if
> >>>this points to the folowing line of code:
> >>Just gives ??:00
> >
> >probably CONFIG_DEBUG_KERNEL=y isn't set in the
> >kernel config. make a copy of the kernel source
> >tree, change just that single option, recompile
> >the kernel and use the vmlinux for the addr2line
> >
> Needed CONFIG_DEBUG_INFO=y.
>
> >>>net/ipv4/tcp_ipv4.c ~2189
> >>>
> >>> vxdprintk(VXD_CBIT(net, 6),
> >>> "sk,req: %p [#%d] (from %d)",
> >>> req->sk, req->sk->sk_xid, current->xid);
> >>>here -----> if (!vx_check(req->sk->sk_xid, VX_IDENT|VX_WATCH))
> >>> continue;
> >>> if (req->class->family == st->family) {
> >>> cur = req;
> >>> goto out;
> >>> }
> >>>
> >>>if the addr2line doesn't produce a line in
> >>>net/ipv4/tcp_ipv4.c, please decrement the addr
> >>>in steps of 4 bytes, like this:
> >>>c02ae98c, c02ae988, c02ae984, c02ae980 ...
> >>>and see where in net/ipv4/tcp_ipv4.c it ends up
> >>>
> >>Sorry, but all I get it is ??:00 and after reading the man on addr2line,
> >>I also compiled hello.c and got the same result. So obviously I'm not up
> >>to snuff with what I should be doing/seeing to get addr2line to
> >>function. Or is there a way to get what you want with "gdb vmlinux" ?
> >
> >(for hello.c you'll need the -g option for gcc)
> >
> Okay. This time the EIP resulted in :
> addr2line -e /usr/src/linux/vmlinux c02ae98c
> include/linux/vs_base.h:23

okay could you please go back in steps of 4 bytes as
described above .. c02ae988, c02ae984, c02ae980 ...
until you hit 'something' in net/ipv4/tcp_ipv4.c?

> So I tried it for the "c02aee1b <tcp_seq_next+53/ad>"
> line and got welcome: addr2line -e /usr/src/linux/vmlinux c02aee1b
> net/ipv4/tcp_ipv4.c:2395

yep, but that is one call higher in the call stack ;)

TIA,
Herbert

> And here is the latest dump :
>
> ksymoops 2.4.9 on i686 2.6.9-rc2-bk1-vs1.9.2.23b. Options used
> -v /usr/src/linux/vmlinux (specified)
> -k /proc/ksyms (default)
> -l /proc/modules (default)
> -o /lib/modules/2.6.9-rc2-bk1-vs1.9.2.23b/ (default)
> -m /usr/src/linux/System.map (default)
>
> Error (regular_file): read_ksyms stat /proc/ksyms failed
> ksymoops: No such file or directory
> No modules in ksyms, skipping objects
> No ksyms, skipping lsmod
> Unable to handle kernel NULL pointer dereference at virtual address 0000001c
> c02ae98c
> *pde = 00000000
> Oops: 0000 [#1]
> CPU: 0
> EIP: 0060:[<c02ae98c>] Not tainted VLI
> Using defaults from ksymoops -t elf32-i386 -a i386
> EFLAGS: 00010286 (2.6.9-rc2-bk1-vs1.9.2.23b)
> eax: 00000000 ebx: 00000000 ecx: ebe22700 edx: f0880000
> esi: f7c0bac0 edi: f4fcc42c ebp: ec956000 esp: ec957f20
> ds: 007b es: 007b ss: 0068
> Stack: f7c0bac0 f4fcc28c f7c0a780 f7c0bac0 ec957f60 000001c2 c02aee1b
> 00000000
> f7c0badc f7c0a780 f7c9c080 c01750ef f7c0a798 0000001a 000003e6
> b7de601a
> 00000009 00000000 00000009 00000000 c03fc7c0 f1e63780 00000400
> ec957fac
> Call Trace:
> [<c02aee1b>] tcp_seq_next+0x53/0xad
> [<c01750ef>] seq_read+0x1d8/0x268
> [<c0159252>] vfs_read+0xc6/0x111
> [<c01594cb>] sys_read+0x47/0x76
> [<c0105e1d>] sysenter_past_esp+0x52/0x71
> Code: 00 8b 4c 24 04 8b 34 24 8b 91 a4 01 00 00 8b 46 10 8b 4c 82 14 85
> c9 74 20 b8 00 e0 ff ff 21 e0 8b 00 8b 98 10 05 00 00 8b 41 28 <39> 58
> 1c 74 4e 83 fb 01 74 49 85 c9 75 ef 8b 14 24 8b 42 10 83
>
>
> >>EIP; c02ae98c <listening_get_next+120/1b7> <=====
>
> >>ecx; ebe22700 <pg0+2ba1f700/3fbfb400>
> >>edx; f0880000 <pg0+3047d000/3fbfb400>
> >>esi; f7c0bac0 <pg0+37808ac0/3fbfb400>
> >>edi; f4fcc42c <pg0+34bc942c/3fbfb400>
> >>ebp; ec956000 <pg0+2c553000/3fbfb400>
> >>esp; ec957f20 <pg0+2c554f20/3fbfb400>
>
> Trace; c02aee1b <tcp_seq_next+53/ad>
> Trace; c01750ef <seq_read+1d8/268>
> Trace; c0159252 <vfs_read+c6/111>
> Trace; c01594cb <sys_read+47/76>
> Trace; c0105e1d <sysenter_past_esp+52/71>
>
> This architecture has variable length instructions, decoding before eip
> is unreliable, take these instructions with a pinch of salt.
>
> Code; c02ae961 <listening_get_next+f5/1b7>
> 00000000 <_EIP>:
> Code; c02ae961 <listening_get_next+f5/1b7>
> 0: 00 8b 4c 24 04 8b add %cl,0x8b04244c(%ebx)
> Code; c02ae967 <listening_get_next+fb/1b7>
> 6: 34 24 xor $0x24,%al
> Code; c02ae969 <listening_get_next+fd/1b7>
> 8: 8b 91 a4 01 00 00 mov 0x1a4(%ecx),%edx
> Code; c02ae96f <listening_get_next+103/1b7>
> e: 8b 46 10 mov 0x10(%esi),%eax
> Code; c02ae972 <listening_get_next+106/1b7>
> 11: 8b 4c 82 14 mov 0x14(%edx,%eax,4),%ecx
> Code; c02ae976 <listening_get_next+10a/1b7>
> 15: 85 c9 test %ecx,%ecx
> Code; c02ae978 <listening_get_next+10c/1b7>
> 17: 74 20 je 39 <_EIP+0x39>
> Code; c02ae97a <listening_get_next+10e/1b7>
> 19: b8 00 e0 ff ff mov $0xffffe000,%eax
> Code; c02ae97f <listening_get_next+113/1b7>
> 1e: 21 e0 and %esp,%eax
> Code; c02ae981 <listening_get_next+115/1b7>
> 20: 8b 00 mov (%eax),%eax
> Code; c02ae983 <listening_get_next+117/1b7>
> 22: 8b 98 10 05 00 00 mov 0x510(%eax),%ebx
> Code; c02ae989 <listening_get_next+11d/1b7>
> 28: 8b 41 28 mov 0x28(%ecx),%eax
>
> This decode from eip onwards should be reliable
>
> Code; c02ae98c <listening_get_next+120/1b7>
> 00000000 <_EIP>:
> Code; c02ae98c <listening_get_next+120/1b7> <=====
> 0: 39 58 1c cmp %ebx,0x1c(%eax) <=====
> Code; c02ae98f <listening_get_next+123/1b7>
> 3: 74 4e je 53 <_EIP+0x53>
> Code; c02ae991 <listening_get_next+125/1b7>
> 5: 83 fb 01 cmp $0x1,%ebx
> Code; c02ae994 <listening_get_next+128/1b7>
> 8: 74 49 je 53 <_EIP+0x53>
> Code; c02ae996 <listening_get_next+12a/1b7>
> a: 85 c9 test %ecx,%ecx
> Code; c02ae998 <listening_get_next+12c/1b7>
> c: 75 ef jne fffffffd <_EIP+0xfffffffd>
> Code; c02ae99a <listening_get_next+12e/1b7>
> e: 8b 14 24 mov (%esp),%edx
> Code; c02ae99d <listening_get_next+131/1b7>
> 11: 8b 42 10 mov 0x10(%edx),%eax
> Code; c02ae9a0 <listening_get_next+134/1b7>
> 14: 83 .byte 0x83
>

_______________________________________________
Vserver mailing list
Vserver_at_list.linux-vserver.org
http://list.linux-vserver.org/mailman/listinfo/vserver


About this list Date view Thread view Subject view Author view Attachment view
[Next/Previous Months] [Main vserver Project Homepage] [Howto Subscribe/Unsubscribe] [Paul Sladen's vserver stuff]
Generated on Thu 16 Sep 2004 - 14:33:21 BST by hypermail 2.1.3