Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=82145 --- shadow/82145 2007-08-06 14:15:44.000000000 -0400 +++ shadow/82145.tmp.16942 2007-08-07 15:18:21.000000000 -0400 @@ -1,12 +1,12 @@ Bug#: 82145 Product: Mono: Class Libraries Version: 1.2 OS: unknown OS Details: -Status: REOPENED +Status: ASSIGNED Resolution: Severity: Unknown Priority: Major Component: Mono.Security AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] @@ -411,6 +411,36 @@ p.s. I only see your own email address added on c.c. ------- Additional Comments From [EMAIL PROTECTED] 2007-08-06 14:15 ------- of course, like a true multithreaded bug, this works nicely when I enable the debugging logging inside Mono.Security... sigh + +------- Additional Comments From [EMAIL PROTECTED] 2007-08-07 15:18 ------- +short story: + +Right now I'm up to 15100 cycles (still going) without the crash. +However I do, sometimes, get a deadlock when starting the sample +(which didn't happen before). Once this is fixed I'll attach an +updated Mono.Security.dll assembly to this bug so you can confirm this +solve your problem (while I re-test existing code with the fix). + +long story: + +In the SSL/TLS code all operations are done async, which means it's +all done in a (single!) background thread. So even if the sample uses +multiple threads, that all ends up in the single background thread +(btw I'm curious about the performance gains of using so many threads). + +The problem is that the locks don't block the same thread from +entering inside the critical sections. This isn't normally a problem, +unless the sample code uses multi-threads over a single connection. + +Why ? because SSL/TLS is record based. So when a, or some, record(s) +is/are received they are sent to caller. It is possible that a partial +record was received too (and not sent to the caller because it can't +be decrypted and verified). This data can be corrupted with multiple +threads (data from another thread will be appended). + +The fix is to make sure we don't return if we have a partial record +(which could have bad effects, at least memory wise). + _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
