There seems to be a race condition in bind/named that leads to a
segfault. This is the patch that solves the problem,and it is not fixed
in upstream:
--- lib/dns/view.c.orig 2014-07-22 14:55:09.300375792 +0300
+++ lib/dns/view.c 2014-07-22 14:55:15.025126595 +0300
@@ -516,6 +516,8 @@
UNUSED(task);
+ isc_event_free(&event);
+
LOCK(&view->lock);
view->attributes |= DNS_VIEWATTR_RESSHUTDOWN;
@@ -523,8 +525,6 @@
UNLOCK(&view->lock);
- isc_event_free(&event);
-
if (done)
destroy(view);
}
@@ -540,6 +540,8 @@
UNUSED(task);
+ isc_event_free(&event);
+
LOCK(&view->lock);
view->attributes |= DNS_VIEWATTR_ADBSHUTDOWN;
@@ -547,8 +549,6 @@
UNLOCK(&view->lock);
- isc_event_free(&event);
-
if (done)
destroy(view);
}
@@ -564,6 +564,8 @@
UNUSED(task);
+ isc_event_free(&event);
+
LOCK(&view->lock);
view->attributes |= DNS_VIEWATTR_REQSHUTDOWN;
@@ -571,8 +573,6 @@
UNLOCK(&view->lock);
- isc_event_free(&event);
-
if (done)
destroy(view);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------
Example backtrace below. Originally Thread 1's (the faulting thread)
backtrace showed just:
Thread 1 (LWP 19194):
#0 0xdededede in ?? ()
By modifiying the core file to display the stack below that frame) we
can get the following:
Program terminated with signal 11, Segmentation fault.
#0 0xb7414724 in isc_event_free (eventp=0xb6fe82dc) at event.c:85
85 event.c: No such file or directory.
in event.c
(gdb) t a a bt
Thread 7 (LWP 19195):
#0 0xb73f5bcd in __lll_lock_wait () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#1 0xb73f192b in _L_lock_502 () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#2 0xb73f1760 in pthread_mutex_lock () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#3 0xb7423394 in isc___mem_put (ctx0=0x9a9c138, ptr=0xb3d20b70,
size=36, file=0xb7450514 "radix.c", line=190) at mem.c:1326
#4 0xb74285ed in _clear_radix (radix=0xb70165a8, func=<value
optimized out>) at radix.c:190
#5 0xb7428725 in isc_radix_destroy (radix=0xb70165a8, func=0x9a9c154)
at radix.c:215
#6 0xb7623e18 in destroy_iptable (tabp=0xb6fea524) at iptable.c:181
#7 dns_iptable_detach (tabp=0xb6fea524) at iptable.c:171
#8 0xb75fe8b9 in destroy (aclp=0xb7028c24) at acl.c:463
#9 dns_acl_detach (aclp=0xb7028c24) at acl.c:476
#10 0xb75fe9ac in dns_aclenv_destroy (env=0xb7028c24) at acl.c:621
#11 0xb76f4179 in destroy (view=0xb7028ab8) at view.c:370
#12 0xb76f5122 in req_shutdown (task=0x9d4c408, event=0x0) at view.c:577
#13 0xb74348e7 in dispatch (uap=0xb6fed008) at task.c:1013
#14 run (uap=0xb6fed008) at task.c:1158
#15 0xb73ef4f8 in start_thread () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#16 0xb724b97e in clone () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
Thread 6 (LWP 19198):
#0 0xb73f38f7 in pthread_cond_timedwait () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#1 0xb744cb5d in isc_condition_waituntil (c=0xb6fee048, m=0xb6fee018,
t=0xb6fee040) at condition.c:59
#2 0xb743746b in run (uap=0xb6fee008) at timer.c:822
#3 0xb73ef4f8 in start_thread () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#4 0xb724b97e in clone () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
Thread 5 (LWP 19182):
#0 0xb71abcbd in sigsuspend () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
#1 0xb74391bd in isc__app_ctxrun (ctx0=0xb7457ee0) at app.c:680
#2 0xb74392f9 in isc__app_run () at app.c:707
#3 0x080696bc in ?? ()
#4 0xb7198ba3 in __libc_start_main () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
#5 0x080578f1 in ?? ()
Thread 4 (LWP 19196):
#0 0xb73f5bcd in __lll_lock_wait () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#1 0xb73f192b in _L_lock_502 () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#2 0xb73f1760 in pthread_mutex_lock () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#3 0xb7619a71 in destroy_disp (task=0x9d534e8, event=0xb6fead58) at
dispatch.c:716
#4 0xb74348e7 in dispatch (uap=0xb6fed008) at task.c:1013
#5 run (uap=0xb6fed008) at task.c:1158
#6 0xb73ef4f8 in start_thread () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#7 0xb724b97e in clone () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
Thread 3 (LWP 19197):
#0 0xb761949e in dispatch_free (dispp=<value optimized out>) at
dispatch.c:2536
#1 0xb7619c1e in destroy_disp (task=0x9d530f8, event=0x0) at
dispatch.c:733
#2 0xb74348e7 in dispatch (uap=0xb6fed008) at task.c:1013
#3 run (uap=0xb6fed008) at task.c:1158
#4 0xb73ef4f8 in start_thread () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#5 0xb724b97e in clone () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
Thread 2 (LWP 19199):
#0 0xb724c09c in epoll_wait () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
#1 0xb74491ea in watcher (uap=0xb6ff0008) at socket.c:3717
#2 0xb73ef4f8 in start_thread () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#3 0xb724b97e in clone () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
Thread 1 (LWP 19194):
#0 0xb7414724 in isc_event_free (eventp=0xb6fe82dc) at event.c:85
#1 0xb76f5117 in req_shutdown (task=0x9d4fcc8, event=0xb70287d8) at
view.c:574
#2 0xb74348e7 in dispatch (uap=0xb6fed008) at task.c:1013
#3 run (uap=0xb6fed008) at task.c:1158
#4 0xb73ef4f8 in start_thread () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libpthread.so.0
#5 0xb724b97e in clone () from
./NG0927903_CLA-0-19182-53bf44ea-named-SEGV.env/lib/libc.so.6
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe
from this list
bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users