Unfortunately it is still hanging with the patch.  I recompiled with -g and used dbx to see where it was hanging.
Please let me know if I can generate any further information and thanks for your help.

DBX info when hanging
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) where      
  [1] _poll(0x512a70, 0x1, 0x493e0, 0x53c988, 0x206c8, 0x135e8c), at 0xff11d8c8
=>[2] PollVec::Block(this = 0x4e2558), line 100 in "PollVec.cc"
  [3] SMTask::Block(), line 71 in "SMTask.h"
  [4] WaitDone(exec = 0x5113d0), line 76 in "lftp.cc"
  [5] main(argc = 2, argv = 0xffbef5e4), line 408 in "lftp.cc"


I dumped the local variables for each frame:

Frame 5
Current function is main
  408      WaitDone(top_exec);
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) dump
argv = 0xffbef5e4
exit_code = 0
task_count = 0
args = 0x50d2e0
argc = 2
cwd = 0x50ea70
home = 0x50d3d8 "/$HOME/.lftp"
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print *args  
*args = {
    ind = 4
}
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print argv[0]
argv[0] = 0xffbef728 "/var/tmp/lftp/lftp-3.4.2/bin/lftp"
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print argv[1]
argv[1] = 0xffbef74a "-d"
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print *cwd  
*cwd = {
    fd   = 3
    name = 0x511298 "/var/tmp/lftp/lftp-3.4.2/bin/BCAS"
}

Frame 4
Current function is WaitDone
   76         SMTask::Block();
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) dump
exec = 0x5113d0
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print *exec
*exec = {
    cmd                 = (nil)
    args                = 0x50d2e0
    output              = (nil)
    background          = false
    exit_code           = 1
    next_cmd            = 0x540c41 "|| exit 8"
    cmd_buf             = 0x540c28 "put testfile -o testfile || exit 8"
    partial_cmd         = false
    alias_field         = 0
    used_aliases        = (nil)
    condition           = COND_ANY
    feeder              = 0x50d518
    feeder_called       = false
    prev_exit_code      = 0
    builtin             = BUILTIN_NONE
    old_cwd             = {
        device_prefix_len = 0
        path              = 0x5137c0 "~"
        is_file           = false
        url               = (nil)
    }
    old_lcwd            = (nil)
    slot                = (nil)
    glob                = (nil)
    args_glob           = (nil)
    redirections        = 0
    next                = (nil)
    queue_feeder        = (nil)
    saved_session       = (nil)
    interactive         = false
    top_level           = true
    verbose             = false
    status_line         = 0x5115b8
    remote_completion   = true
    long_running        = 30
    csh_history         = false
    verify_host         = true
    verify_path         = true
    verify_path_cached  = false
    start_time          = 1143567836
    cwd                 = 0x50ea70
    default_output      = (nil)
    last_bg             = -1
    wait_all            = true
    static_cmd_table    = ()
    dyn_cmd_table       = (nil)
    dyn_cmd_table_count = 0
    chain               = 0x5113d0
    cwd_owner           = 0x5113d0
}
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print *(exec->feeder)
*exec->feeder = {
    saved_buf = 0x50eba0 ""
    prev      = (nil)
}
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print *(exec->args)
*exec->args = {
    ind = 4
}

Frame 3
Current function is SMTask::Block
   71      static void Block() { sched_total.Block(); }
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print sched_total
sched_total = {
    fds           = 0x512a70
    fds_num       = 1
    fds_allocated = 16
    timeout       = 300000
}
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print *(sched_total.fds)
*sched_total.fds = {
    fd      = 4
    events  = 1
    revents = 1
}

Frame 2
Current function is PollVec::Block
  100      poll(fds,fds_num,timeout);
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) dump
this = 0x4e2558
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print *this
*this = {
    fds           = 0x512a70
    fds_num       = 1
    fds_allocated = 16
    timeout       = 300000
}
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print *(this->fds)
*this->fds = {
    fd      = 4
    events  = 1
    revents = 1
}



Regards,

Adam Ringel
PE Application Support
703-903-3892 (w)
703-701-3685 (p)



   "Alexander V. Lukyanov" <[EMAIL PROTECTED]>
   Sent by: [EMAIL PROTECTED]

   03/28/2006 04:59 AM

To
"Adam Ringel" <[EMAIL PROTECTED]>
cc
[email protected]
Subject
Re: Bug? when doing a PUT on an empty file (Solaris 8) from ksh using ssl





On Mon, Mar 27, 2006 at 07:30:07PM -0500, Adam Ringel wrote:
> 19561:  read(7, 0x002840D5, 48)             = 48
> 19561:    B7 ?BC85DA04 V k v\n11 p * ! y83 rC2E5A4 "C1F5948DFE0EF7 k ,87 j
> 19561:     E9AC98D0F }83 = 007\t9DDFF4DB10
> 19561:  write(7, 0x00292200, 59)            = 59
> 19561:    140301\00101160301\0 08816 ,8A qF518AFA5 I uB99EFA j 7F596 ?87A1
> 19561:     | D > o "869ECF ? p9683B3D7 nE680 71C18ECD7 a O8FEB l
> 19561:  read(4, 0x00251F30, 5)              Err#11 EAGAIN
> 19561:  poll(0x00245820, 1, 300000) (sleeping...)

Please test attached patch. I'm not sure yet what causes the hang, but this
can be a reason.

--
  Alexander.

Attachment: diff
Description: Binary data

Reply via email to