Details
Description
The `make check' target of the Makefile fails to build on x86, AMD64 is fine. Output is (stripped to relevant parts only):
root@build:/home/arno/build-area/trafficserver-2.1.7-unstable# make check Making check in proxy/api/ts ... Create thread 59 Create thread 60 Create thread 61 Create thread 62 Create thread 63 0x08724a60 0x08724a60 0x08724a60 FAIL: test_freelist PASS: test_arena test_List PASSED PASS: test_List ============================================= 1 of 4 tests failed Please report to dev@trafficserver.apache.org =============================================
or
/bin/bash: line 5: 29956 Segmentation fault ${dir}$tst FAIL: test_freelist
or it even succeeds. This might be a race condition therefore. A backtrace from a core dump of a crashed LD_PRELOAD=./.libs/libtsutil.so.2 ./.libs/test_freelist run shows:
Core was generated by `./.libs/test_freelist'. Program terminated with signal 11, Segmentation fault. #0 ink_freelist_new (f=0x94ff018) at ink_queue.cc:322 322 SET_FREELIST_POINTER_VERSION(next, *ADDRESS_OF_NEXT(TO_PTR(FREELIST_POINTER(item)), f->offset), (gdb) bt #0 ink_freelist_new (f=0x94ff018) at ink_queue.cc:322 #1 0x08048996 in test (d=0x1f) at test_freelist.cc:50 #2 0xf772f7b0 in start_thread () from /lib/libpthread.so.0 #3 0xf74688fe in clone () from /lib/libc.so.6
I'm not familiar with ATS' data structures, but gdb indicates the following values:
$2 = {s = {pointer = 0x1f1f1f1f, version = 165962584}, data = 712803871161786143} (gdb) print f $3 = (InkFreeList *) 0x94ff018 (gdb) print f->offset $4 = 0