# --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: package/.../musl/pkg/openvswitch/0001-ovs-thread-Set-stacksize-to-1M.patch # Copyright (C) 2015 The OpenSDE Project # # More information can be found in the files COPYING and README. # # This patch file is dual-licensed. It is available under the license the # patched project is licensed under, as long as it is an OpenSource license # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms # of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # --- SDE-COPYRIGHT-NOTE-END --- From 92ae6e162812876c082fd9d05a0eeac062f832ae Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Mon, 25 Aug 2014 08:50:26 +0000 Subject: [PATCH] ovs-thread: Set stacksize to 1M With musl libc the default stacksize is 80k which is too small and makes it segfault. We increase it to 1MB. http://permalink.gmane.org/gmane.linux.network.openvswitch.general/5831 Signed-off-by: Natanael Copa --- lib/ovs-thread.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff -ru openvswitch-2.3.0.orig/lib/ovs-thread.c openvswitch-2.3.0/lib/ovs-thread.c --- openvswitch-2.3.0.orig/lib/ovs-thread.c 2014-10-02 14:37:47.196714056 -0300 +++ openvswitch-2.3.0/lib/ovs-thread.c 2014-10-02 14:38:10.826714288 -0300 @@ -28,6 +28,9 @@ #include "socket-util.h" #include "util.h" +/* set default stack size to 1M */ +#define OVS_STACK_SIZE (1024 * 1024) + #ifdef __CHECKER__ /* Omit the definitions in this file because they are somewhat difficult to * write without prompting "sparse" complaints, without ugliness or @@ -329,6 +332,7 @@ { struct ovsthread_aux *aux; pthread_t thread; + pthread_attr_t attr; int error; forbid_forking("multiple threads exist"); @@ -340,10 +344,21 @@ aux->arg = arg; ovs_strlcpy(aux->name, name, sizeof aux->name); - error = pthread_create(&thread, NULL, ovsthread_wrapper, aux); + error = pthread_attr_init(&attr); + if (error) { + ovs_abort(error, "pthread_attr_init failed"); + } + error = pthread_attr_setstacksize(&attr, OVS_STACK_SIZE); + if (error) { + ovs_abort(error, "pthread_attr_setstacksize failed"); + } + + error = pthread_create(&thread, &attr, ovsthread_wrapper, aux); if (error) { ovs_abort(error, "pthread_create failed"); } + pthread_attr_destroy(&attr); + return thread; }