I have found another piece in the puzzle, the bug only happens when:

1) file is empty
2) exec >> ${LOGFILE} 2>&1 is run from ksh script that calls lftp

When I remove that exec command, it never hangs.  Is there some sort of terminal dependency?  This is meant to be run from an application which will not have a terminal associated with it.

Regards,

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

----- Forwarded by Adam Ringel/HQ/FHLMC on 03/28/2006 06:13 PM -----
   Adam Ringel/HQ/FHLMC

   03/28/2006 02:41 PM

To
"Alexander V. Lukyanov" <[EMAIL PROTECTED]>
cc
[email protected], [EMAIL PROTECTED]
Subject
Fw: Bug? when doing a PUT on an empty file (Solaris 8) from ksh using ssl




Sorry, I should have printed out the fully qualified data from  CmdExec *exec for Frame 4:
(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print -r *exec
*exec = {
    CmdExec::SessionJob::Job::SMTask::next = 0x540fb8
    CmdExec::SessionJob::Job::SMTask::suspended = false
    CmdExec::SessionJob::Job::SMTask::suspended_slave = false
    CmdExec::SessionJob::Job::SMTask::running = 0
    CmdExec::SessionJob::Job::SMTask::deleting = false
    CmdExec::SessionJob::Job::SMTask::block = {
        PollVec::fds  = (nil)
        PollVec::fds_num = 0
        PollVec::fds_allocated = 0
        PollVec::timeout = -1
    }
    CmdExec::SessionJob::Job::SMTask::chain = 0x50de08
    CmdExec::SessionJob::Job::SMTask::sched_total = class PollVec /* STATIC CLASS */
    CmdExec::SessionJob::Job::SMTask::stack = 0x50de38
    CmdExec::SessionJob::Job::SMTask::stack_ptr = 1
    CmdExec::SessionJob::Job::SMTask::stack_size = 16
    CmdExec::SessionJob::Job::SMTask::now = class TimeDate /* STATIC CLASS */
    CmdExec::SessionJob::Job::SMTask::current = 0x50de08
    CmdExec::SessionJob::Job::next = (nil)
    CmdExec::SessionJob::Job::waiting_alloc = 4
    CmdExec::SessionJob::Job::fg = true
    CmdExec::SessionJob::Job::fg_data = (nil)
    CmdExec::SessionJob::Job::jobno = -1
    CmdExec::SessionJob::Job::parent = (nil)
    CmdExec::SessionJob::Job::waiting = 0x53c9d0
    CmdExec::SessionJob::Job::waiting_num = 1
    CmdExec::SessionJob::Job::cmdline = (nil)
    CmdExec::SessionJob::Job::chain = 0x53d3b8
    CmdExec::SessionJob::session = 0x513350
    CmdExec::cmd        = (nil)
    CmdExec::args       = 0x50d2e0
    CmdExec::output     = (nil)
    CmdExec::background = "">
    CmdExec::exit_code  = 1
    CmdExec::next_cmd   = 0x540c41 "|| exit 8"
    CmdExec::cmd_buf    = 0x540c28 "put testfile -o testfile || exit 8"
    CmdExec::partial_cmd = false
    CmdExec::alias_field = 0
    CmdExec::used_aliases = (nil)
    CmdExec::condition  = COND_ANY
    CmdExec::feeder     = 0x50d518
    CmdExec::feeder_called = false
    CmdExec::prev_exit_code = 0
    CmdExec::builtin    = BUILTIN_NONE
    CmdExec::old_cwd    = {
        Path::device_prefix_len = 0
        Path::path        = 0x5137c0 "~"
        Path::is_file     = false
        Path::url         = (nil)
    }
    CmdExec::old_lcwd   = (nil)
    CmdExec::slot       = (nil)
    CmdExec::glob       = (nil)
    CmdExec::args_glob  = (nil)
    CmdExec::redirections = 0
    CmdExec::next       = (nil)
    CmdExec::queue_feeder = (nil)
    CmdExec::saved_session = (nil)
    CmdExec::interactive = false
    CmdExec::top_level  = true
    CmdExec::verbose    = false
    CmdExec::status_line = 0x5115b8
    CmdExec::remote_completion = true
    CmdExec::long_running = 30
    CmdExec::csh_history = false
    CmdExec::verify_host = true
    CmdExec::verify_path = true
    CmdExec::verify_path_cached = false
    CmdExec::start_time = 1143573380
    CmdExec::cwd        = 0x50ea70
    CmdExec::default_output = (nil)
    CmdExec::last_bg    = -1
    CmdExec::wait_all   = true
    CmdExec::static_cmd_table = ()
    CmdExec::dyn_cmd_table = (nil)
    CmdExec::dyn_cmd_table_count = 0
    CmdExec::chain      = 0x5113d0
    CmdExec::cwd_owner  = 0x5113d0
}

(/opt/SUNWspro/bin/../WS6U1/bin/sparcv9/dbx) print -r *(exec->current)
*exec->current = {
    SMTask::next    = 0x5115f0
    SMTask::suspended = false
    SMTask::suspended_slave = false
    SMTask::running = 1
    SMTask::deleting = false
    SMTask::block   = {
        PollVec::fds  = (nil)
        PollVec::fds_num = 0
        PollVec::fds_allocated = 0
        PollVec::timeout = 0
    }
    SMTask::chain   = 0x50de08
    SMTask::sched_total = class PollVec /* STATIC CLASS */
    SMTask::stack   = 0x50de38
    SMTask::stack_ptr = 1
    SMTask::stack_size = 16
    SMTask::now     = class TimeDate /* STATIC CLASS */
    SMTask::current = 0x50de08
}

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

----- Forwarded by Adam Ringel/HQ/FHLMC on 03/28/2006 02:35 PM -----
   Adam Ringel/HQ/FHLMC

   03/28/2006 01:05 PM

To
"Alexander V. Lukyanov" <[EMAIL PROTECTED]>
cc
[email protected], [EMAIL PROTECTED]
Subject
Re: Bug? when doing a PUT on an empty file (Solaris 8) from ksh using sslLink




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