Seems that musl libc's default thread stack size is 80k, which causes a segfault (stack overflow actually) when trying to add a bridge (via the "ovs-vsctl add-br" command).
OpenWRT has been switching to musl libc for a few months now. So far, we've been using OVS with uClibc, so I did not catch this earlier. This patch is a RFC: - is this thread stack size sufficient ? - is this approach acceptable ? In OpenWRT we'll use this patch since it works. Issue was found and fixed by Robert McKay. I fine tuned his patch and will add it to our OVS package in OpenWRT. Signed-off-by: Robert McKay <rob...@mckay.com> Signed-off-by: Alexandru Ardelean <ardeleana...@gmail.com> --- lib/ovs-thread.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/ovs-thread.c b/lib/ovs-thread.c index 7855b3a..e35ddba 100644 --- a/lib/ovs-thread.c +++ b/lib/ovs-thread.c @@ -347,6 +347,7 @@ ovs_thread_create(const char *name, void *(*start)(void *), void *arg) { struct ovsthread_aux *aux; pthread_t thread; + pthread_attr_t attr; int error; forbid_forking("multiple threads exist"); @@ -358,7 +359,9 @@ ovs_thread_create(const char *name, void *(*start)(void *), void *arg) aux->arg = arg; ovs_strlcpy(aux->name, name, sizeof aux->name); - error = pthread_create(&thread, NULL, ovsthread_wrapper, aux); + pthread_attr_init(&attr); + pthread_attr_setstacksize(&attr, 128*1024); + error = pthread_create(&thread, &attr, ovsthread_wrapper, aux); if (error) { ovs_abort(error, "pthread_create failed"); } -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev