Articles of segmentation fault

zsh菜单完成导致zle重置提示后出现问题

我在我的.zshrc中有以下代码: TMOUT=1 TRAPALRM() { zle reset-prompt } 触发菜单完成后,菜单中的所有项目,除了突出显示的一个在TRAPALRM触发之后消失,以及在菜单zsh segvaults中在短时间后继续导航 有没有解决方法或解决方法? 编辑:zsh版本是在Linux Mint 17上的5.0.2 编辑:我在Gentoo的zsh版本5.0.7上观察同样的事情

pthread_create导致分段错误

我的程序包含以下代码。 pthread_t PThreadTable[32]; for (i=1; i<P; i++) // Checked with P = 4 { long i, Error; printf( "pthread_create %d!\n", i ); Error = pthread_create(&PThreadTable[i], NULL, (void * (*)(void *))(SlaveStart), NULL); if (Error != 0) { printf("Error in pthread_create().\n"); exit(-1); } } SlaveStart(); 该代码给调用pthread_create (通过gdb和valgrind检查)分段错误。 为什么这样?

为什么Linux程序derefrences(char *)0不总是段错误?

我正在testing旨在检测subprocess何时分离的代码。 想象一下,当这段代码不总是出现段错误时,我感到惊讶: #include <stdio.h> int main() { char *p = (char *)(unsigned long)0; putchar(*p); return 0; } 我在Debian Linux 2.6.26内核下运行; 我的shell是来自Debian ksh包的版本M 93s + 2008-01-31的AT&T ksh93 。 有时候这个程序会出现段错误,否则它会以一个非零的退出状态静静地终止,但是没有消息。 我的信号检测程序报告如下: segfault terminated by signal 11: Segmentation fault segfault terminated by signal 53: Real-time signal 19 segfault terminated by signal 11: Segmentation fault segfault terminated by signal […]

用setrlimit()设置堆栈大小,并引发堆栈溢出/段错误

在下面给出的示例中,我尝试将堆栈大小设置为1kb。 为什么现在可以在foo()为大小为8kb的堆栈分配一个整数? #include <stdio.h> #include <sys/resource.h> void foo(void); int main() { struct rlimit lim = {1024, 1024}; if (setrlimit(RLIMIT_STACK, &lim) == -1) return 1; foo(); return 0; } void foo() { unsigned ints[2048]; printf("foo: %u\n", ints[2047]=42); }

主返回后的分段错误

我在Linux上有一个很长的程序,在主返回后给我分段错误。 它是一个很长的程序,所以我不能发表。 那么你能帮我什么可以做出这样的错误? 谢谢。 哇,这些答案真的很快。 谢谢你们。 我想我解决了,我忘了malloc一个string,并将其用作缓冲区。 现在我已经把它绑定了,它并没有给我一个分段错误的信号。 再一次,谢谢大家。

非常奇怪的段错误调用WinUsb_GetOverlappedResult

我有这个代码: void GetResult(WINUSB_INTERFACE_HANDLE InterfaceHandle, LPOVERLAPPED lpOverlapped) { DWORD numBytes = 0; WinUsb_GetOverlappedResult( InterfaceHandle, lpOverlapped, &numBytes, TRUE ); return; uint8_t stack[64]; } WinUsb_GetOverlappedResult是一个__stdcall函数声明如下: WINBOOL WINAPI WinUsb_GetOverlappedResult (WINUSB_INTERFACE_HANDLE InterfaceHandle, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, WINBOOL bWait); 在debugging模式下使用GCC 5.3.0(MinGW)编译它一切正常。 (我不能用VC ++编译,因为我使用的是GCC扩展。) 但是,如果我改变它stack[80]然后它segfaults! 这里是每种情况下的反汇编。 64(不崩溃): Dump of assembler code for function GetResult(void*, _OVERLAPPED*): 88 { 0x00408523 <+0>: push %ebp 0x00408524 […]