Hello List,

I have tried:
strace -o l.txt /usr/sbin/httpd -X

Then, the issue does not arise and the script works well.

I have tried:
strace -o l.txt /usr/sbin/httpd
This does not help, as apache goes in daemon mode.

So it must be an issue with the deamon mode etc.

Is there any way to debug this ?

Thank you,
Harald

Am 27.06.2013 16:11, schrieb Harald Oehlmann:
> Hi,
> 
> I tried to isolate the issue that a ::http::geturl call hangs in rivet
> but works in tclsh.
> 
> Could you please verify the following scripts to check if this is the
> same for you ?
> 
> --Issue--
> 
> I tried to isolate the issue, that the following file works well when
> executed in a tcl8.6 shell and lets an apache thread hang:
> --test_linkcheck.tcl---
> puts [package require http]<br/>
> if { [catch {
>       set h [::http::geturl "http://www.elmicron.de/test.txt";]
> } err] } {
>       puts " unknown url<br/>"
> } else {
>       puts [::http::status $h]<br/>
>       ::http::cleanup $h
> }
> --EOF--
> 
> % tclsh8.6 test_linkcheck.tcl
> 2.8.7<br/>
> ok<br/>
> %
> 
> The file is saved in "/var/www/http" of my test server, and a request of
> the address: "//centostest/test_linkcheck.tcl" lets the client wait
> until I restart the apache server.
> 
> An additional option "-timeout 1000" to geturl would let stop geturl in
> a timeout.
> 
> The file "http://www.elmicron.de/test.txt"; is a 12 byte test file.
> 
> ----
> 
> Tests I have done:
> 
> --T1: Try synchronous socket--
> 
> The following script tries to get the data by a synchronous socket:
> 
> --test_socket.tcl--
> set h [socket www.elmicron.de 80]
> fconfigure $h -translation crlf -buffering line -blocking 1
> puts $h "GET /test.txt HTTP/1.0\nHost: www.elmicron.de\n"
> while { ! [eof $h] } {
>       set data [gets $h]
>       if {$data ne ""} {
>               puts $data
>       }
> }
> close $h
> --eof--
> 
> This works well in rivet and in tclsh
> 
> --T2: Try asynchronous socket--
> 
> The following script loads the data by an asynchoneous method:
> 
> --test_socket_async.tcl--
> proc sockin {} {
>       global h
>       puts [gets $h]
>       if {[eof $h]} {
>               close $h
>               set h ""
>       }
> }
> 
> set h [socket -async www.elmicron.de 80]
> fconfigure $h -translation crlf -buffering line -blocking 0
> puts $h "GET /test.txt HTTP/1.0\nHost: www.elmicron.de\n"
> fileevent $h readable sockin
> vwait h
> --eof--
> 
> This works well in tcl86 and hangs the browser when executed with rivet.
> 
> --T3: Event loop--
> 
> So I thought the issue is the event loop.
> So I tried a simple event loop example which stays for 1 second in the
> event loop:
> 
> --test_vwait.tcl--
> puts "wait 1 sec"
> set h 0
> after 1000 "set h 1"
> vwait h
> puts end
> --eof--
> 
> This works well in tclsh and rivet.
> 
> ------
> 
> Is this a bug or a feature ?
> Do you also see what I see ?
> Are my tests just stupid ?
> 
> Thank you for any ideas,
> Harald
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to