World: r3wp
[!REBOL3-OLD1]
older newer | first last |
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. | |
older newer | first last |