Hi,
Stefan, thank you very much for the patch!
In general, you should use this library only if you really need posix
regular expressions in shared memory. If you are fine with the perl
syntax then I would rather suggest pcre. Pcre can allocate the memory in
a single block that can be moved to shm mem easily.
I made some performance tests a year ago with simple expressions, the
libc implementation and pcre performed almost at the same speed when
back tracking was not in use. With back tracking, pcre was an order of
magnitude faster than libc.
Henning, I can apply the patch, will do that asap. Thanks for the pointer!
Thanks,
Miklos
On 06/14/2010 03:11 PM, Henning Westerholt wrote:
On Sunday 13 June 2010, Stefan Keller wrote:
I used the shm_regex functions from lib in one of
my own modules and
noticed that it is dead-locking (it hangs in FUTEX_WAIT).
The code hangs in regexec() when trying to acquire the lock. This was
a bit hard to find out as I couldn't reproduce it in a virtual
machine with some test code I wrote. It turns out this only happens if
the machine has more than one physical CPU core.
Reproducable on x86_64 with two CPU cores, glibc 2.3.6 (from Debian
Etch) and glibc 2.11.1 (from Ubuntu Jaunty).
Attached is a patch which does its own locking and thus works around
this problem.
Hi Stefan,
thank you for the patch, it looks fine to me on a first sight. The library in
question is not used in any of the existing modules, so i think it should be
pretty save. Miklos, its ok when i apply it, or do you maybe want to refine it
a bit?
Regards,
Henning