[Mono-bugs] [Bug 366441] New: Regex class is not threadsafe

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Mar 1 21:48:43 EST 2008


https://bugzilla.novell.com/show_bug.cgi?id=366441


           Summary: Regex class is not threadsafe
           Product: Mono: Class Libraries
           Version: SVN
          Platform: i686
        OS/Version: All
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: System
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: tum at veridicus.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: Field Engineer


The Regex class, after construction should be threadsafe as the state machine
should be readonly after construction.  For some reason, the Regex class is not
threadsafe.  A temporary fix is to protect the instance methods of the Regex
class such as Regex.Match with a lock but this is not ideal.

The following program is a test case:


using System;
using System.Threading;
using System.Text.RegularExpressions;

public class Test
{
        protected static Regex c_Regex = new Regex
        (
                @"(ANS_TIME_POSITION\=)([0-9\.]+)", RegexOptions.IgnoreCase
        );

        private static void Run()
        {
                string s;
                Match match;

                s = "ANS_TIME_POSITION=100.0";

                while (true)
                {
                        match = c_Regex.Match(s);

                        if (!match.Success)
                        {
                                Console.WriteLine("ERROR 1");
                        }

                        if (match.Groups[2].Value != "100.0")
                        {
                                Console.WriteLine("ERROR 2");
                        }
                }
        }

        public static void Main()
        {
                Thread thread1, thread2;

                thread1 = new Thread(Run);
                thread1.Start();

                thread2 = new Thread(Run);
                thread2.Start();
        }  
}


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list