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 […]

C中的分段错误(核心转储)错误

我正在尝试编写一个C程序来求和并减去两个复数。 这是代码: #include #include typedef struct cplx { int re; int im; } cplx; cplx* sum(cplx *x, cplx *y,int n) { cplx *z; int i; for(i=0;i<n;i++) { z[i].re=x[i].re+y[i].re; z[i].im=x[i].im+y[i].im; } return z; } cplx* difference(cplx *x, cplx *y, int n) { cplx *z; int i; for(i=0;i<n;i++) { z[i].re=x[i].re-y[i].re; z[i].im=x[i].im-y[i].im; } return z; } cplx* sumdiff(cplx […]

将CFIndex转换为NSUInteger?

如何将typedef signed long CFIndex转换为typedef unsigned int NSUInteger ? 如果我使用CFIndex作为NSUInteger类型的参数,是否可以。 我还没有投入它,而编译器似乎并不介意。 编译器是否只为我进行转换?

扩展Python代码 – 添加语言function

我已经在python中独自编程了4年,并且从未在编写python的C代码中进行过深入的研究。 我最近一直在研究一个涉及在该级别修改python的问题。 代码似乎非常一致,因此相对容易理解。 然而,它足够复杂,只是通过研究它如何一起工作对我来说没有意义。 当然,由于缺乏更好的资源,我没有花费太多时间或精力。 我还查看了python站点上的 文档 。 但是,它更倾向于通过模块扩展语言。 我希望找到一些简单的文档,说明解析器如何在C级工作以及如何直接扩展核心语言(添加语言function)。 面向模块的文档提供了一些关于构建类型和管理对象的方式的深刻见解,但我正在寻找更多。 那里有没有这样的文件?