When running the test for working re_compile_pattern, I get a hang; attaching to the process gives me:
(gdb) where #0 __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:93 #1 0x00002ab6dd5c6221 in _L_lock_10625 () at malloc.c:5209 #2 0x00002ab6dd5c3fa7 in __GI___libc_malloc (bytes=46964889589568) at malloc.c:2921 #3 0x00002ab6dd32495e in local_strdup (s=0x2ab6ddc00ad8 "/lib/x86_64-linux-gnu/libgcc_s.so.1") at dl-load.c:162 #4 _dl_map_object (loader=0x2ab6dd33f4c0, name=0x2ab6dd6ba2b8 "libgcc_s.so.1", type=2, trace_mode=0, mode=-1879048191, nsid=<optimised out>) at dl-load.c:2473 #5 0x00002ab6dd32f85b in dl_open_worker (a=0x7fff5cdce1a0) at dl-open.c:225 #6 0x00002ab6dd32b186 in _dl_catch_error (objname=0x7fff5cdce1e8, errstring=0x7fff5cdce1f0, mallocedp=0x7fff5cdce1ff, operate=0x2ab6dd32f710 <dl_open_worker>, args=0x7fff5cdce1a0) at dl-error.c:178 #7 0x00002ab6dd32f32a in _dl_open (file=0x2ab6dd6ba2b8 "libgcc_s.so.1", mode=-2147483647, caller_dlopen=0x2ab6dd64ba69 <__GI___backtrace+217>, nsid=-2, argc=1, argv=<optimised out>, env=0x7fff5cdcf408) at dl-open.c:639 #8 0x00002ab6dd671622 in do_dlopen (ptr=0x7fff5cdce3a0) at dl-libc.c:89 #9 0x00002ab6dd32b186 in _dl_catch_error (objname=0x7fff5cdce3d0, errstring=0x7fff5cdce3c0, mallocedp=0x7fff5cdce3df, operate=0x2ab6dd6715e0 <do_dlopen>, args=0x7fff5cdce3a0) at dl-error.c:178 #10 0x00002ab6dd6716e4 in dlerror_run (args=0x7fff5cdce3a0, operate=0x2ab6dd6715e0 <do_dlopen>) at dl-libc.c:48 #11 __GI___libc_dlopen_mode (name=<optimised out>, mode=<optimised out>) at dl-libc.c:165 #12 0x00002ab6dd64ba69 in init () at ../sysdeps/x86_64/../ia64/backtrace.c:53 #13 __GI___backtrace (array=<optimised out>, size=64) at ../sysdeps/x86_64/../ia64/backtrace.c:104 #14 0x00002ab6dd5b53af in __libc_message (do_abort=2, fmt=0x2ab6dd6bf028 "*** glibc detected *** %s: %s: 0x%s ***\n") at ../sysdeps/unix/sysv/linux/libc_fatal.c:180 #15 0x00002ab6dd5bfb96 in malloc_printerr (action=3, str=0x2ab6dd6bb9b2 "malloc(): memory corruption", ptr=<optimised out>) at malloc.c:5007 #16 0x00002ab6dd5c1cfb in _int_malloc (av=0x2ab6dd8f9740 <main_arena>, bytes=88) at malloc.c:3555 #17 0x00002ab6dd5c5365 in __libc_calloc (n=<optimised out>, elem_size=<optimised out>) at malloc.c:3274 #18 0x00002ab6dd6161a4 in create_cd_newstate (hash=4, context=0, nodes=0x7fff5cdcf090, dfa=<optimised out>) at regex_internal.c:1672 #19 re_acquire_state_context (err=0x7fff5cdcf0c0, dfa=<optimised out>, nodes=0x7fff5cdcf090, context=0) at regex_internal.c:1547 #20 0x00002ab6dd61c9e1 in transit_state_mb (mctx=0x7fff5cdcefa0, pstate=<optimised out>) at regexec.c:2561 #21 transit_state (state=0x1839340, mctx=0x7fff5cdcefa0, err=0x7fff5cdcf0b0) at regexec.c:2272 #22 check_matching (p_match_first=0x7fff5cdcf0a0, fl_longest_match=1, mctx=0x7fff5cdcefa0) at regexec.c:1158 #23 re_search_internal (preg=0x6010a0 <regex.4073>, string=0x400d00 <data.4081> "x", length=25, start=<optimised out>, range=25, stop=<optimised out>, nmatch=<optimised out>, pmatch=0x18372f0, eflags=0) at regexec.c:829 #24 0x00002ab6dd6210ec in re_search_stub (bufp=0x6010a0 <regex.4073>, string=0x400d00 <data.4081> "x", length=<optimised out>, start=0, range=<optimised out>, stop=<optimised out>, regs=0x0, ret_len=0) at regexec.c:449 #25 0x00002ab6dd621b58 in __re_search (bufp=<optimised out>, string=<optimised out>, length=<optimised out>, start=<optimised out>, range=<optimised out>, regs=<optimised out>) at regexec.c:312 #26 0x000000000040083a in main () at conftest.c:190 I have glibc 2.15 on my Ubuntu system. The test that is causing this error is: { /* This test is from glibc bug 15078. The test case is from Andreas Schwab in < http://www.sourceware.org/ml/libc-alpha/2013-01/msg00967.html>. */ static char const pat[] = "[^x]x"; static char const data[] = "\xe1\x80\x80\xe1\x80\xbb\xe1\x80\xbd\xe1\x80\x94\xe1\x80" "\xba\xe1\x80\xaf\xe1\x80\x95\xe1\x80\xbax"; re_set_syntax (0); memset (®ex, 0, sizeof regex); s = re_compile_pattern (pat, sizeof pat - 1, ®ex); if (s) result |= 1; else if (re_search (®ex, data, sizeof data - 1, 0, sizeof data - 1, 0) != 20) result |= 1; } Specifically, the re_search call. Great that it finds the bug, pity that it causes configure to hang… -- http://rrt.sc3d.org