On Thu, Oct 4, 2018 at 1:35 PM,  <papostoles...@gmail.com> wrote:
>
> Panic was caused by a stack smash, default cgo thread stack size was too
> small. My fix is to change cgo thread stack size at compile time by patching
> gcc_darwin_amd64.c, _cgo_sys_thread_start:
>
> 40a41,45
>> #ifdef CGO_STACK_SIZE
>>     size = CGO_STACK_SIZE;
>>     pthread_attr_setstacksize(&attr, size);
>> #endif
>>
>
> $ CGO_CFLAGS="-DCGO_STACK_SIZE=0x200000" make
>
> There does not seem to be any other way to increase the stack size for
> interop threads.

Glad you figured it out.

I believe that the Darwin linker has a flag to set the default stack
size, and you can pass it by using `go build
-extldflags=-darwin_linker_flag=0x200000`.

Ian



> On Monday, October 1, 2018 at 7:53:03 PM UTC-4, pba wrote:
>>
>> I'm running into a situation where my program deadlocks due to
>> (apparently) a call to runtime.(*sigctxt).preparePanic which never exits
>> (stack below).
>>
>> The program uses cgo and passes callbacks to the C library, this
>> particular panic seems to be triggered when the go callback returns to the C
>> code. I cannot debug the C code (binary dependency).
>>
>> Any suggestions on how to make the the program crash cleanly (i.e. panic
>> and exit) ?
>>
>> go version go1.11 darwin/amd64
>> macOS Sierra (10.12.6)
>>
>> 2359 Thread_1644947
>>     + 2359 _sigtramp  (in libsystem_platform.dylib) + 26  [0x7fff9656cb3a]
>>     +   2359 runtime.sigtramp  (in test) + 51  [0x4065fe3]
>>     +     2359 runtime.sigtrampgo  (in test) + 544  [0x4049000]
>>     +       2359 runtime.sighandler  (in test) + 1788  [0x404866c]
>>     +         2359 runtime.(*sigctxt).preparePanic  (in test) + 172
>> [0x40475fc]
>>
>> Thanks
>>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to