标签: segmentation-fault

strlen没有检查NULL

为什么strlen()不检查NULL?

如果我这样做strlen(NULL),就会出现故障.

试图了解它背后的基本原理(如果有的话).

c segmentation-fault strlen

25
推荐指数
4
解决办法
5万
查看次数

gcc-10.0.1 特定的段错误

我有一个带有 C 编译代码的R 包,它在相当长一段时间内相对稳定,并且经常针对各种平台和编译器(windows/osx/debian/fedora gcc/clang)进行测试。

最近添加了一个新平台来再次测试包:

Logs from checks with gcc trunk aka 10.0.1 compiled from source
on Fedora 30. (For some archived packages, 10.0.0.)

x86_64 Fedora 30 Linux

FFLAGS="-g -O2 -mtune=native -Wall -fallow-argument-mismatch"
CFLAGS="-g -O2 -Wall -pedantic -mtune=native -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong -fstack-clash-protection -fcf-protection"
CXXFLAGS="-g -O2 -Wall -pedantic -mtune=native -Wno-ignored-attributes -Wno-deprecated-declarations -Wno-parentheses -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong -fstack-clash-protection -fcf-protection"
Run Code Online (Sandbox Code Playgroud)

此时,编译后的代码立即开始沿着这些行进行段错误:

 *** caught segfault ***
address 0x1d00000001, cause 'memory not mapped'
Run Code Online (Sandbox Code Playgroud)

通过使用具有优化级别的rocker/r-basedocker 容器,我已经能够一致地重现段错误。运行较低的优化可以解决问题。运行任何其他设置,包括在 valgrind(-O0 和 -O2)、UBSAN(gcc/clang)下,都没有显示任何问题。我也有理由确定这在 下运行,但没有数据。 …

c gcc segmentation-fault

25
推荐指数
1
解决办法
827
查看次数

PHPUnit分段错误

当我的开发箱(Linux Mint)上的PHPUnit测试正常失败时,它会在我的连续集成框(Centos)上导致"分段错误".两台机器都运行相同版本的PHPUnit.我的开发框运行PHP 5.3.2-1ubuntu4.9,CI为PHP 5.2.17.我宁愿放弃升级PHP作为最后的手段.

根据这个线程:PHPUnit得到分段错误 我已经尝试停用/重新安装Xdebug.我没有inclue.so安装.

在CI框中,我目前只有两个活动扩展:dom来自php-xml(phpunit需要)和memcache(我的框架需要),所有其他扩展都已关闭.

php phpunit segmentation-fault

24
推荐指数
4
解决办法
2万
查看次数

分段故障与页面故障

  1. 我想知道分段错误和页面错误之间有什么区别和关系?

  2. 分段故障只属于分段内存模型吗?

    页面错误只属于分页内存模型吗?

    如果两者都是,那么由于大多数计算机系统(如x86和Linux)使用分页内存模型而不是分段内存模型,为什么GCC C编译器有时会报告分段错误错误?

感谢致敬!

memory-management segmentation-fault page-fault

24
推荐指数
2
解决办法
1万
查看次数

为什么python的eval有长度限制?

我并不是说这会是一个好主意,但我发现你可以通过eval在足够大的输入字符串上运行来崩溃Python(2.7和3.2检查):

def kill_python(N):
    S = '+'.join((str(n) for n in xrange(N)))
    return eval(S)
Run Code Online (Sandbox Code Playgroud)

在我的计算机上S可以很好地生成,但对于大约的值N>74900,Python将失败Segmentation fault (core dumped).解释器可以处理的字符串(或解析树)的长度是否有限制?

注意:我不需要这样做,对我来说,这是一个更深层次的问题,反映了我对盒子里面发生的事情的无知.我想理解为什么Python在这里失败,所以灾难性的(为什么不抛出异常?)

python eval segmentation-fault

23
推荐指数
1
解决办法
1415
查看次数

进程以退出代码139结束(由信号11中断:SIGSEGV)

我正在尝试执行Python脚本,但是我收到以下错误:

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
Run Code Online (Sandbox Code Playgroud)

完整的错误消息可以在这里找到.

我在Linux Mint 18.1 Serena OS上使用python 3.5.2

有人能告诉我为什么会这样,我该怎么解决?

python segmentation-fault linux-mint python-3.5

23
推荐指数
5
解决办法
3万
查看次数

如何在事后gdb会话中找到导致SEGFAULT的线程?

在我的应用程序中,我处理SIGSEG以产生回溯并调用abort()以生成核心转储.

如果我现在对核心运行gdb-post-mortem分析,则导致SEGFAULT的线程不再可见.有什么我可以做的,所以我看到SEGFAULT的原因?

最好的问候,马丁

c++ gdb segmentation-fault

22
推荐指数
1
解决办法
1万
查看次数

SIGNAL 11 SIGSEGV崩溃Android

今天我遇到了一个错误,因为我的Android应用程序是由SIGNAL 11获得的.

此错误通常是由于Android内部存储器未经授权的内存区域访问而发生的.一些可能的场景是web访问,网络通信,服务器图像下载等.我是浏览器加载网址的情况!

http://bootloader.wikidot.com/linux:android:crashlog

我需要在QR码扫描后启动浏览器.

应用程序继续扫描并流畅地启动浏览器,但问题发生在相同步骤的15-20次尝试之后.

我研究了很多,发现其存在于Android Native库中的MEMORY ERROR ..通常当android内部存储系统尝试访问未知内存区域时.

最后我透露,当我在Android应用程序设置部分看到我的应用程序内存使用情况时,我发现缓存已达到10 MB.

android segmentation-fault

22
推荐指数
1
解决办法
4万
查看次数

OSX,ghci,dylib,正确的方法是什么?

我需要构建一些C代码,然后通过FFI引用该C代码.我想在osx上使用ghci里面的绑定.根据我的限制,我不能只将C源文件传递给.cabal文件中的ghc.这是因为ghc/cabal的限制可以在ghc的下一个版本中修复(但我希望我的代码现在可以在旧版本中使用).看到这个的细节错误.

该错误的要点是C代码需要使用一些Objective-C模块进行编译,并且ghc将这些错误解释为链接器脚本.我尝试了很多东西,用makefile自己构建文件是唯一有效的方法.实际上,这应该不是一个问题,因为它应该像我决定使用我自己没有构建的外部C库一样.为了解决这个问题,让我们假装它是一个单独的C库,我可以使用不同的选项轻松地重建它.

如果我将C库构建为.a,那么ghci会抱怨它无法打开.dylib.我的第一个问题是:为什么ghci需要一个.dylib并且它真的使用它吗?

当我构建一个dylib 时,在将代码加载到ghci时会出现段错误.

请记住,这个绑定已经在其他平台上工作了,包括linux和windows,当我编译而不是使用ghci时,绑定在osx上工作正常.这个问题特定于osx/ghci组合.

在上面的那个跟踪中,我正在使用gdb,但无论我是否使用gdb,它都会崩溃.我将其追踪到导致崩溃的线条:

void _glfwClearWindowHints( void )
{
    memset( &_glfwLibrary.hints, 0, sizeof( _glfwLibrary.hints ) );
}
Run Code Online (Sandbox Code Playgroud)

麻烦制造者就是那个memset系列,实际上问题是当在ghci里面运行时写入提示结构_glfwLibrary是一个内存访问违规.提示结构只是一堆整数.它非常扁平和简单,因此我认为问题是一个问题,无论是我如何链接事物或ghci加载代码的方式.

以下是我用来构建dylib和.a的makefile的位:

GCCFLAGS  := $(shell ghc --info | ghc -e "fmap read getContents >>=   \
             putStrLn . unwords . read . Data.Maybe.fromJust . lookup \
             \"Gcc Linker flags\"")
FRAMEWORK := -framework Cocoa -framework OpenGL
GLFW_FLAG := $(GCCFLAGS) -O2 -fno-common -Iglfw/include -Iglfw/lib    \
             -Iglfw/lib/cocoa $(CFLAGS)

all: $(BUILD_DIR)/static/libglfw.a $(BUILD_DIR)/dynamic/libglfw.dylib

$(BUILD_DIR)/dynamic/libglfw.dylib: $(OBJS)
  $(CC) -dynamiclib -Wl,-single_module -compatibility_version 1       \ …
Run Code Online (Sandbox Code Playgroud)

macos haskell ffi segmentation-fault cabal

22
推荐指数
1
解决办法
1959
查看次数

执行printf()和分段错误

#include<stdio.h>

int main()
{
    char *name = "Vikram";
    printf("%s",name);
    name[1]='s';
    printf("%s",name);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

终端上没有打印输出,只是出现分段故障.但是当我在GDB中运行它时,我得到以下 -

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400525 in main () at seg2.c:7
7       name[1]='s';
(gdb) 
Run Code Online (Sandbox Code Playgroud)

这意味着程序在第7行接收SEG故障(显然我不能在常量字符数组上写入).那么为什么不执行第6行的printf()?

c printf segmentation-fault

22
推荐指数
3
解决办法
4万
查看次数