Tag: 恐慌

alloc:invalid block – 对于每个线程的线程Tcl / 1 interp,Tcl_IncrRefCount和Tcl_DecrRefCount线程是否安全?

我们的32位服务器应用程序静态嵌入tcl 8.4.11。 在Red Hat Linux 6.5 64位上,我们遇到崩溃/核心转储。 失败的样子 alloc:无效块:0xf6f00f58:88 f6 0 在问题的底部,我记录了我们见过的两个不同的核心转储。 我们已经将潜在的根本原因隔离到两个线程之间共享的TCL对象,并同时运行单独的TCL解释器实例。 我们认为这是因为TCL对象从这些并发执行的TCL解释器传递给Tcl_IncrRefCount / Tcl_DecrRefCount。 当TCL编译为线程时,Tcl_IncrRefCount / Tcl_DecrRefCount线程是否安全? TCL对象是否由TCL解释器实例共享? 有没有办法在解释器实例之间禁用TCL对象共享? 在TCL版本8.6.3中情况有所改善吗? (gdb) bt #0 __kernel_vsyscall () at arch/x86/vdso/vdso32/sysenter.S:49 #1 0x001b7871 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #2 0x001b914a in abort () at abort.c:92 #3 0x080f611c in Tcl_PanicVA () #4 0x080f613b in Tcl_Panic () #5 0x0810133c […]