Bugzilla – Attachment 2244 Details for
Bug 2091
scp hangs while copying a large file and being executed as a background process ( with nohup )
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Detailed Debug info.
New Text Document.txt (text/plain), 7.10 KB, created by
Vikas K Vicky
on 2013-04-15 22:40:08 AEST
(
hide
)
Description:
Detailed Debug info.
Filename:
MIME Type:
Creator:
Vikas K Vicky
Created:
2013-04-15 22:40:08 AEST
Size:
7.10 KB
patch
obsolete
>Continuation from the Steps to reproduce the problem ==> >=============================================================================================== > > >Go to the source_machine and login as test1, there were 2 scp related > >processes hung after exiting from the ksh. > > ># ps -ef|grep scp > > test1 1245328 1 0 16:32:39 - 0:00 scp /tmp/testfile > >test3@target_machine:/tmp/testfile > > test1 1638838 1245328 0 16:32:39 - 0:18 /usr/bin/ssh -x > >-oForwardAgent no -oPermitLocalCommand no -oClearAllForwardings yes -l > >test3 -- target_machine scp -t -- /tmp/testfile > > test1 4850090 3998138 0 16:42:59 pts/1 0:00 grep scp > > >=============================================================================================== > > >Imporatant Debug Traces ( Stack Traces for both the processes ) - > > >/home/test1> dbx -a 1245328 > >Waiting to attach to process 1245328 ... > >Successfully attached to scp. > >warning: Directory containing scp could not be determined. > >Apply 'use' command to initialize source path. > > > >Type 'help' for help. > >reading symbolic information ... > >stopped in waitpid at 0xd0231600 > >0xd0231600 (waitpid+0x1c0) 80410014 lwz r2,0x14(r1) > >(dbx) where > >waitpid(??, ??, ??) at 0xd0231600 <======== its waiting here > >killchild(signo = 1), line 156 in "scp.c" > >__fd_poll(??, ??, ??) at 0xd024bf94 > >scp.poll(__listptr = 0x2ff21e00, __nfds = 1, __timeout = -1), line 107 > >in "poll.h" > >scpio(f = 0xf0611120, fd = 6, _p = 0x2000a5f8, l = 16384, c = > >0x2ff21ef0), line 488 in "scp.c" > >source(argc = 1, argv = 0x2000268c), line 740 in "scp.c" > >toremote(targ = "/tmp/testfile", argc = 2, argv = 0x2000268c), line 581 > >in "scp.c" > >main(argc = 2, argv = 0x2000268c), line 439 in "scp.c" > > > >(dbx) proc signal > >(1) HUP: 0x20002318 (killchild) > >(2) INT: 0x20002318 (killchild) > >(13) PIPE: 0x2000233c (lostconn) > >(15) TERM: 0x20002318 (killchild) > > > >(dbx) p signo > >1 > >(dbx) p do_cmd_pid > >1638838 > >(dbx) > >=============================================================================================== > >/home/test1> dbx -a 1638838 > >Waiting to attach to process 1638838 ... > >Successfully attached to ssh. > >warning: Directory containing ssh could not be determined. > >Apply 'use' command to initialize source path. > > > >Type 'help' for help. > >reading symbolic information ... > >stopped in __fd_select at 0xd024c78c ($t1) > >0xd024c78c (__fd_select+0xcc) 80410014 lwz r2,0x14(r1) > >(dbx) where > >__fd_select(??, ??, ??, ??, ??) at 0xd024c78c <======== its waiting here > >clientloop.select(__fds = 8, __readlist = 0x2003b7d8, __writelist = > >0x2003d928, __exceptlist = (nil), __timeout = (nil)), line 232 in > >"time.h" > >client_wait_until_can_do_something(readsetp = 0x2ff21cf0, writesetp = > >0x2ff21cf4, maxfdp = 0x2ff21d0c, nallocp = 0x2ff21d28, rekeying = 0), > >line 584 in "clientloop.c" > >client_loop(have_pty = 0, escape_char_arg = -2, ssh2_chan_id = 0), line > >1429 in "clientloop.c" > >ssh_session2(), line 1329 in "ssh.c" > >main(ac = 1, av = 0x2ff22cdc), line 884 in "ssh.c" > > > >(dbx) proc signal > >(1) HUP: SIG_IGN > >(2) INT: 0x2001a854 (signal_handler) > >(3) QUIT: 0x2001a854 (signal_handler) > >(13) PIPE: SIG_IGN > >(15) TERM: 0x2001a854 (signal_handler) > >(28) WINCH: 0x2001a860 (window_change_handler) > >(dbx) > > > >When user test1 logout from ksh on the source_machine, the terminal > >disconnected and the SIGHUP signal was sent to the scp process ( pid > >1245328 ) and its child process ( pid 1638838 ). > > >From the output of the dbx subcommand "proc signal", we can see process > >1245328 use a signal handler killchild to handle the SIGHUP signal, and > >process 1638838 just ignore the SIGHUP signal, SIG_IGN. > > >From the output of the dbx subcommand "where", we can see process > >1245328, called killchild function after receiving signal SIGHUP, then > >sent SIGHUP to its child process 1638838, and called waitpid funciton to > >wait its child process 1638838 to stop. > > >But, process 1638838 just ignored the SIGHUP signal and kept running in > >the client_loop. That's why the 2 processes hung.
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 2091
: 2244 |
3353
|
3354