Not even looking at your code (time limited) I know the demo's do a 
good job of showing you how to get started. I wrote a pretty meaty web 
server/application server to the tune of 120,000 lines of code 
thereabouts that works great on both Linux and Windows.

I had to make my own "listener thread" and hand off "work" to worker 
threads that are given the TCPIP connection and then the listener is 
"reset" , then the worker is told to resume.

This works pretty decent but the problem between windows and linux for 
me was that they simply do not do multi-threading exactly the same and I 
had to make some Linux and Windows specific Code to handle the multiple 
threads (as you say - many hits coming from various computers) to work 
smoothly.

Initially I wrote a way the parent thread can send a message to child 
threads and vice versa if necessary. I made critical sections for this 
special messaging thing.. and frankly it purrs on Linux but in windows I 
was being intermittently locking up for whatever reason. I did some 
reasearch and multi-thread debugging is difficult - so after awhile I 
never nailed the windows problem but it seemed to be getting hung as in 
thread contention or or dead-lock kind of deal... whatever you call it - 
I needed a better way to manage which worker threads got assigned to new 
web requests in windows. I had to made a loop that "PEEKED" into the 
status of the threads to see if they were done, sitting idle - and if so 
I'd use the first one I found matching this criteria for the next 
incoming request (from listener).

In Linux my inter-thread Messaging system works brilliant... in windows 
I needed an alternative.

Though I'm happy to report that 90% of my code thereabouts is OS 
independent... maybe a little more.

Generally speaking the only code that needs special handling based on 
the operating system for me so far is:

* inter-thread communication ( have on Linux, not used so much on windows )
* file things... like which way the slash goes forward for linux, and 
backwards for windows...

Honestly, not a whole heck of a lot - FreePascal is sweet on that note 
for sure! So in the Synapse Library!
--Jason



On 8/30/2010 9:40 AM, Jarto Tarpio wrote:
> I've been testing Synapse's own httpsserv-demo. It works well on
> Windows, but on Linux it appears not to be thread-safe and crashes
> badly.
>
> I changed the demo slightly to make it console-based (msgbox ->
> writeln), so it would not require X11. When I fire lots of wget-
> requests from several computers simultaneously at it, it crashes very
> fast with the error message below.
>
> I'm using Debian 5.0.5 on a Dell PowerEdge T100.
> Compiler: FPC 2.4.1 (latest 2.4.0 from the fixes-branch)
> The error can be reproduced with both the stable- and trunk-versions
> of Synapse.
>
> My changes and an unstripped binary are available at:
> http://www.starsoft.fi/jarto/httpsserv.tgz
>
> Regards,
>
> Jarto Tarpio
>
> Error message:
> *** glibc detected *** ./httpsservconsole: double free or corruption
> (!prev): 0xb6402830 ***
> ======= Backtrace: =========
> /lib/i686/cmov/libc.so.6[0xb7633764]
> /lib/i686/cmov/libc.so.6(cfree+0x96)[0xb7635966]
> /usr/lib/i686/cmov/libcrypto.so.0.9.8(CRYPTO_free+0x3a)[0xb7430cca]
> /usr/lib/i686/cmov/libcrypto.so.0.9.8(ERR_clear_error+0x5c0)[0xb74a26f
> 0]
> /usr/lib/libssl.so(SSL_CTX_use_certificate_chain_file+0x242)[0xb757651
> 2]
> ...
>
>
>
> ------------------------------------------------------------------------------
> Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
> Be part of this innovative community and reach millions of netbook users
> worldwide. Take advantage of special opportunities to increase revenue and
> speed time-to-market. Join now, and jumpstart your future.
> http://p.sf.net/sfu/intel-atom-d2d
> _______________________________________________
> synalist-public mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/synalist-public


------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
synalist-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synalist-public

Reply via email to