From: Jeff D. <jd...@ka...> - 2001-11-15 17:20:00
|
h.n...@se... said: > kill -USR <pid of tracing thread> > but nothing happens. No xterm appears. Did you compile it with CONFIG_PT_PROXY enabled? Do you get a gdb when you put 'debug' on the command line? Jeff |
From: Jeff D. <jd...@ka...> - 2001-11-16 17:35:07
|
h.n...@se... said: > (gdb) > 0xa009c502 in switch_pids () at net_kern.c:439 > 439 } > (gdb) > warning: Couldn't get registers. Don't try to step through a context switch. Some things need to be atomic wrt gdb, and they aren't if you try to step through switch_pids. > So now I put a breakpoint to at sys_read() in fs/read_write.c. > There (at my site in line 248) a call to a read-pointer (which is here > tty_read()) is happening. > In tty_read() (at my site in line 678) a call to tty->ldisc.read happens > which is in fact a call to read_chan(). Is your driver being called anywhere? If not, that's definitely a problem. Jeff |
From: Heiko N. <h.n...@se...> - 2001-11-19 09:03:34
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday 16 November 2001 19:54, Jeff Dike wrote: > h.n...@se... said: > > (gdb) > > 0xa009c502 in switch_pids () at net_kern.c:439 > > 439 } > > (gdb) > > warning: Couldn't get registers. > > Don't try to step through a context switch. Some things need to be atomic > wrt gdb, and they aren't if you try to step through switch_pids. > > > So now I put a breakpoint to at sys_read() in fs/read_write.c. > > There (at my site in line 248) a call to a read-pointer (which is here > > tty_read()) is happening. > > In tty_read() (at my site in line 678) a call to tty->ldisc.read happens > > which is in fact a call to read_chan(). > > Is your driver being called anywhere? If not, that's definitely a problem. > > Jeff What do you mean with "your driver" ? I just (try to) access the serial interface of the real host where a chipcard reader is attached. - -- Heiko Nardmann (Dipl.-Ing.), h.n...@se..., Software Development secunet Security Networks AG - Sicherheit in Netzwerken (www.secunet.de), Weidenauer Str. 223-225, D-57076 Siegen Tel. : +49 271 48950-13, Fax : +49 271 48950-50 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE7+Mnrpm53PRScYygRAmG3AKC5CEh4xkT7vyl3sKiAVAZosDaVjACg7UOY 8de1VezZBQOyOwBFl/gQ4XU= =XYRv -----END PGP SIGNATURE----- |
From: Heiko N. <h.n...@se...> - 2001-11-16 12:52:03
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thursday 15 November 2001 19:39, Jeff Dike wrote: > h.n...@se... said: > > kill -USR <pid of tracing thread> > > but nothing happens. No xterm appears. > > Did you compile it with CONFIG_PT_PROXY enabled? > > Do you get a gdb when you put 'debug' on the command line? > > Jeff That option (CONFIG_PT_PROXY) was missing. Now 'debug' on the command line and 'kill -USR1' works both. Currently I have the problem with a sys_read accessing the serial interface and then hanging. The call to SYS_read() is the last thing I see in the strace log file (except things happening when pressing ctrl-c). So now I put a breakpoint to at sys_read() in fs/read_write.c. There (at my site in line 248) a call to a read-pointer (which is here tty_read()) is happening. In tty_read() (at my site in line 678) a call to tty->ldisc.read happens which is in fact a call to read_chan(). Then again the debugger enters tty_read() again (from chan_user.c). Next function is tty_interrupt() (from chan_kern.c). Next function is ssl_interrupt() (from ssl.c). Next function is handle_IRQ_event() (from irq.c). Next function is do_IRQ() (from irq.c). Next function is sigio_handler() (from net_kern.c). Next function is __sigprocmask() (according to gdb from ../sysdeps/unix/sysv/linux/sigprocmask.c:49 although it does not find the file - from libc ?). Next function is change_signals() (from net_kern.c). When entering 'next' again the process hangs. This is reproducable (using 2.4.14-1 UML). Any idea? I will do some more deeper analyze. Thanks! - -- Heiko Nardmann (Dipl.-Ing.), h.n...@se..., Software Development secunet Security Networks AG - Sicherheit in Netzwerken (www.secunet.de), Weidenauer Str. 223-225, D-57076 Siegen Tel. : +49 271 48950-13, Fax : +49 271 48950-50 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE79Qu9pm53PRScYygRAkgVAKCWeaWtXd1GqiQ9Pu8rmsqVrca/+ACeLWVh WnFQKgoGyAfSIfpmsJi2gao= =7d+g -----END PGP SIGNATURE----- |
From: Heiko N. <h.n...@se...> - 2001-11-16 13:21:57
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Friday 16 November 2001 13:51, Heiko Nardmann wrote: > On Thursday 15 November 2001 19:39, Jeff Dike wrote: > > h.n...@se... said: > > > kill -USR <pid of tracing thread> > > > but nothing happens. No xterm appears. > > > > Did you compile it with CONFIG_PT_PROXY enabled? > > > > Do you get a gdb when you put 'debug' on the command line? > > > > Jeff > > That option (CONFIG_PT_PROXY) was missing. Now 'debug' on the command line > and 'kill -USR1' works both. > > Currently I have the problem with a sys_read accessing the serial interface > and then hanging. The call to SYS_read() is the last thing I see in the > strace log file (except things happening when pressing ctrl-c). > > So now I put a breakpoint to at sys_read() in fs/read_write.c. > There (at my site in line 248) a call to a read-pointer (which is here > tty_read()) is happening. > In tty_read() (at my site in line 678) a call to tty->ldisc.read happens > which is in fact a call to read_chan(). In my next test the function schedule_timeout() (from sched.c) is called here. Next function is schedule() (from sched.c). Next function which hangs then is switch_to(). So next I tried to step into switch_to() (from net_kern.c). Next function is __libc_fcntl() (according to gdb from ../sysdeps/unix/sysv/linux/i386/fcntl.c:45 although it does not find the file - - from statically linked libc ?). After 5 steps I am in forward_interrupts() (from net_kern.c). The next step takes me back again to __libc_fcntl(). Four steps later I am in forward_interrupts() back. In the following there is a switching between __libc_fcntl(), __errno_location(), forward_interrupts(). Then at some point sigemptyset() is called (from sigempty.c - libc ?). Then change_signals() is called (from net_kern.c). Then sigaddset() is called (from sigaddset.c - libc ?). Back in change_signals(). Then __sigprocmask is called (from ../sysdeps/unix/sysv/linux/sigprocmask.c - libc ?). Then we are in sigemptyset () again. Then we are in switch_pids() (from net_kern.c). Then sigaddset() is shown. Then switch_pids() is shown. Then sigaddset() is shown. Then __sigprocmask() is shown. Then switch_pids() is shown. Then sigismember() is shown. Then switch_pids() is shown. Then sigismember() is shown. Then switch_pids() is shown. At some point I get the following: sigaddset (set=0xa27f3c68, signo=14) at sigaddset.c:26 26 sigaddset.c: No such file or directory. (gdb) 27 in sigaddset.c (gdb) 118 ../sysdeps/unix/sysv/linux/bits/sigset.h: No such file or directory. (gdb) 33 sigaddset.c: No such file or directory. (gdb) 0xa009c502 in switch_pids () at net_kern.c:439 439 } (gdb) warning: Couldn't get registers. warning: Couldn't get registers. warning: Couldn't get registers. warning: Couldn't get registers. warning: Couldn't get registers. ptrace: No such process. warning: Couldn't get registers. warning: Couldn't get registers. warning: Couldn't get registers. Cannot remove breakpoints because program is no longer writable. It might be running in another process. Further execution is probably impossible. 0xa00a2d94 in set_current () at net_kern.c:439 439 } > Then again the debugger enters tty_read() again (from chan_user.c). > Next function is tty_interrupt() (from chan_kern.c). > Next function is ssl_interrupt() (from ssl.c). > Next function is handle_IRQ_event() (from irq.c). > Next function is do_IRQ() (from irq.c). > Next function is sigio_handler() (from net_kern.c). > Next function is __sigprocmask() (according to gdb from > ../sysdeps/unix/sysv/linux/sigprocmask.c:49 although it does not find the > file - from statically linked libc ?). > Next function is change_signals() (from net_kern.c). > When entering 'next' again the process hangs. > > This is reproducable (using 2.4.14-1 UML). > > Any idea? > > I will do some more deeper analyze. > > Thanks! Is there a way in gdb to record the input and output to make it viewable to other developers? - -- Heiko Nardmann (Dipl.-Ing.), h.n...@se..., Software Development secunet Security Networks AG - Sicherheit in Netzwerken (www.secunet.de), Weidenauer Str. 223-225, D-57076 Siegen Tel. : +49 271 48950-13, Fax : +49 271 48950-50 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE79RK8pm53PRScYygRAs5mAKDjlKEQ34y7hIYlZfVa/4+8PI2c6QCbB0VR OzWarHWHK/AiNNrhWaDXvGo= =9Dap -----END PGP SIGNATURE----- |