r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3-OLD1]

Henrik
22-Dec-2009
[20387]
Pavel, about bug #1399, we need to dig deeper to get a more accurate 
report for Carl, so he can fix it quickly. Which file transfer example 
are you talking about here?
Pavel
22-Dec-2009
[20388]
http://www.rebol.net/wiki/Port_Examples-> 4.4 Transfer a large file
Henrik
22-Dec-2009
[20389]
I do get interruptions during transfer here, but they are not reliable 
in size.
Pavel
22-Dec-2009
[20390x2]
In my machine this happen at the same point each time single client, 
but originally I've found this when I run 2 simultaneous clients 
with different large files (my was 50 and 100 MB)
Anyway I'm glad to you acknowledged the bug. Together with bug #1367 
and unsure garbage collection this prevents to build reliable (even 
simple) TCP servers.
Henrik
22-Dec-2009
[20392x2]
I don't think this is the same bug. I get different interruptions 
and no stack overflow.
Anyway, there's a lot to dig through here.
Steeve
22-Dec-2009
[20394]
#1367, why this one ?
Henrik
22-Dec-2009
[20395]
(sorry, forgot to mention that I didn't get a stack overflow)
Pavel
22-Dec-2009
[20396]
Sorry Typo #1369
Steeve
22-Dec-2009
[20397]
Henrik, i guess  your case  is covered by #1369 aswell
Henrik
22-Dec-2009
[20398]
I only use a single client/server.
Pavel
22-Dec-2009
[20399]
The difference is that #1399 breaks even if single client is running, 
I've observed that filetransfer goes parallel even for some time 
(but not finish) when two clients was run. So the difference was 
mutual block happen after some time. (Henrik you are quicker in typing")
Henrik
22-Dec-2009
[20400]
Pavel, what happens for me is that:

1. I start the server and it waits like it should

2. Then I start the client and transfer begins. At some point around 
10-20 MB in, the server just stops and the client returns to console. 
After a few seconds the server also returns to the console.

3. If I then start the server again, the read continues for another 
80000 bytes, like this:

>> do %/c/serve.r
Script: "Untitled" Version: none Date: none
subport read
len: 32000 total: 19192000 of 406258740...read
subport read
len: 32000 total: 19224000 of 406258740...read
subport read
len: 9000 total: 19233000 of 406258740...read
subport read
len: 7000 total: 19240000 of 406258740...read
subport close


And then the port closes and the server quits again, unless I start 
the client.
Pavel
22-Dec-2009
[20401]
Windows platform?
Henrik
22-Dec-2009
[20402]
yes, XP under Parallels.
Pavel
22-Dec-2009
[20403x4]
Mine last three server messages:
len: 20000 total: 4260000 of 51923978
subport read
len: 20000 total: 4280000 of 51923978
subport read
len: 20000 total: 4300000 of 51923978
And client:
send: 20000 bytes
wrote
send: 20000 bytes
wrote
** Internal error: stack overflow

** Where: either switch applier wake-up loop applier wait send-chunk 
either switch applier wake-up loop

er switch applier wake-up loop applier wait send-chunk either switch 
applier wake-up loop applier wait

ier wake-up loop applier wait send-chunk either switch applier wake-up 
loop applier wait send-chunk eit

op applier wait send-chunk either switch applier wake-up loop applier 
wait send-chunk either switch app

t send-chunk either switch applier wake-up loop applier wait send-chunk 
either...
>>
Server stops smoothly after pressetted timeout
Steeve
22-Dec-2009
[20407x2]
hum, i tried the ping-pong example  with 3clients and I don't have 
this bug, did you modified the client in some way Pavel ?
especially the send-chunk function which seems to do some recursive 
stuffs
Pavel
22-Dec-2009
[20409]
Steeve I've mentioned large file example with server/client not modified,
Henrik
22-Dec-2009
[20410]
let's be sure we're all running the same examples. The one in bug#1369 
is not the one Pavel is referring to, as far as I can tell.
Steeve
22-Dec-2009
[20411]
The thing i can say after inspecting the source, is that it's not 
adapted to have several clients.

The clients are not waiting for any response from the server after 
sending each chunk.

So that, the server could be stucked with massives waiting chunks 
in memory
Pavel
22-Dec-2009
[20412]
Steeve pls look up one page we are using single server single client 
large file example
Steeve
22-Dec-2009
[20413]
Well, my remark stay relevant.

Because  if for any reason the server is slower than the client, 
a lot of chunks can be stacked in the server's memory
Henrik
22-Dec-2009
[20414]
Pavel is referring to this example:

http://www.rebol.net/wiki/Port_Examples#Transfer_a_large_file
Steeve
22-Dec-2009
[20415]
Guys, I know that well, just read what i say
Henrik
22-Dec-2009
[20416]
it's not adapted to have several clients
 <- but why do I get problems, then?
Steeve
22-Dec-2009
[20417x5]
it's not the only one problem, all the chunks are sent in one massive 
request before the server treat them, i guess
can you just  change this function:

send-chunk: func [port file /local data] [
    append clear data read/part file 20000
    if empty? data [return false]
    print ["send:" length? data "bytes"]
    write port data
    read port
    true
]

just an idea, not tested
sorry, it's wrong, cause data is local.
I should make my tests first
Guess i'm stupid, the problem is really simple.
there is a timeout both in CLIENT and SERVER.
after 10 seconds both server and clients are stopped.
(check the wait command at the end of the scripts)
That's for Henrik's problem.
I don't have the stack overflow bug
Henrik
22-Dec-2009
[20422]
doh... it's even written in a comment. :-)
Steeve
22-Dec-2009
[20423]
:)
Henrik
22-Dec-2009
[20424x2]
I suggest that the wait is done in a different way in the example, 
otherwise the example is not very useful, I think.
removed the wait, and it transfers perfectly.
Pavel
22-Dec-2009
[20426]
Where you removed wait Henrik?
Henrik
22-Dec-2009
[20427]
oops, not the wait, just the 10 near the bottom of both scripts.
Pavel
22-Dec-2009
[20428]
Sorry to say that but still the same in my machine 4'300'000. But 
when you are happy it must not be generall bug.
Henrik
22-Dec-2009
[20429]
well, we still need to figure out what goes wrong. do you start the 
client or the server first?
Steeve
22-Dec-2009
[20430x2]
We know what's going wrong.

The write function (in the send-chunk function) triger a WROTE action 
immediatly without returning in the waiting process before.
To me it's a system bug, probably linked with the OS used (XP).
check the version of R3 u use too
Henrik
22-Dec-2009
[20432]
A96
Steeve
22-Dec-2009
[20433x2]
not you, Pavel
Pavel use XP, i guess only XP has this bug
Henrik
22-Dec-2009
[20435x2]
I guess my version would be important too, if I don't experience 
the bug :-)
and I use XP as well and I don't have the bug.