haskell at list.mightyreason.com
Tue Jul 18 17:13:07 EDT 2006
Rich Fought wrote:
> I have a server application that I am building using GHC 6.4 (yes, an
> update to 6.4.2 is on the horizon, but
> not in the immediate future - unless it fixes this problem :) ) under
> MSYS/MinGW. Things work pretty well,
> but under stress testing the app eventually throws a Windows memory
> access violation (c0000005) exception
> out of the exact same location in the regcomp function every time. When
> it occurs is not deterministic - it could
> be after 20 requests or 2000 (usually higher, though). Various Windows
> debuggers shows it as a memory read
> regcomp is called several times with each incoming request. I'm pretty
> sure it's not a multi-threading issue, as
> there is only one client sending requests over and over again.
> Can anyone suggest some ideas or debugging tips?
Your code is using the provided Text.Regex code. To avoid the regcomp call, you
could use darcs to get my replacement, Text.Regex.Lazy:
darcs get http://evenmere.org/~chrisk/trl/stable/
darcs get http://evenmere.org/~chrisk/trl/head/
(They have the same code right now. The tarball at sourceforge,
http://sourceforge.net/projects/lazy-regex ,is missing a file but the darcs
repository should be complete).
If you compile and install and "import Text.Regex.Lazy.Compat" then you should
get a drop in replacement for Text.Regex that may even perform faster. This
uses pure Haskell (especially Parsec) to emulate the behavior of Text.Regex.
Any reported difference in behavior will be treated as a bug. The code also has
different modules for doing fancier regular expressions (T.R.L.Full) and for
using a very fast DFA engine (T.R.L.CompatDFA). The library should work but the
design is changing/improving except for T.R.L.Compat which has the same
interface as Text.Regex.
If your stress test still dies, then it will not be a problem with regcomp.
More information about the Glasgow-haskell-users