linux 信号4非法指令,“非法指令:4” OS X Lion中显示出来(“Illegal instruction: 4” s...

一些C ++应用程序编译和OS X Snow Leopard中无缝运行,但我最近改为OS X Lion中,在这里,虽然没有编译错误,当我尝试运行它,我得到的错误“非法指令:4”,我不知道,可能是什么原因?

PS:

这些链接标志我用

-Wl,-stack_size,0x10000000,-stack_addr,0xc0000000

这是输出我得到的,当我做sudo truss executable

setrlimit returned result = -1

SYSCALL(args) = return

getpid(0x0, 0x0, 0x0) = 32993 0

__sysctl(0xBFFFF5EC, 0x3, 0xBFFFF5E8) = 0 0

issetugid(0xBFFFF5EC, 0x3, 0xBFFFF5E8) = 0 0

csops(0x0, 0x0, 0xBFFFF65C) = 0 0

shared_region_check_np(0xBFFFD5E0, 0x0, 0xBFFFF65C) = 0 0

stat64("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0xBFFFE830, 0xBFFFF65C) = 0 0

open("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x0, 0x0) = 3 0

pread(0x3, "\312\376\272\276\0", 0x1000, 0x0) = 4096 0

pread(0x3, "\316\372\355\376\a\0", 0x1000, 0x6000) = 4096 0

mmap(0x4D3000, 0x2000, 0x1, 0x12, 0x3, 0x3) = 0x4D3000 0

mmap(0x4D5000, 0x1000, 0x3, 0x12, 0x3, 0x3) = 0x4D5000 0

mmap(0x4D6000, 0x1EF0, 0x1, 0x12, 0x3, 0x3) = 0x4D6000 0

close(0x3) = 0 0

stat64("/usr/lib/libstdc++.6.dylib\0", 0xBFFFE690, 0x1) = 0 0

stat64("/usr/lib/libgcc_s.1.dylib\0", 0xBFFFE690, 0x1) = 0 0

stat64("/usr/lib/libSystem.B.dylib\0", 0xBFFFE560, 0x1) = 0 0

stat64("/usr/lib/libc++abi.dylib\0", 0xBFFFE5D0, 0x1) = 0 0

stat64("/usr/lib/system/libcache.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libcommonCrypto.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libcompiler_rt.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libcopyfile.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libdispatch.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libdnsinfo.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libdyld.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libkeymgr.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/liblaunch.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libmacho.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libmathCommon.A.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libquarantine.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libremovefile.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libsystem_blocks.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libsystem_c.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libsystem_dnssd.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libsystem_info.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libsystem_kernel.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libsystem_network.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libsystem_notify.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libsystem_sandbox.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libunc.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libunwind.dylib\0", 0xBFFFE360, 0x1) = 0 0

stat64("/usr/lib/system/libxpc.dylib\0", 0xBFFFE360, 0x1) = 0 0

open("/dev/dtracehelper\0", 0x2, 0xBFFFF5B0) = 3 0

ioctl(0x3, 0x80086804, 0xBFFFF540) = 0 0

close(0x3) = 0 0

__sysctl(0xBFFFF1FC, 0x2, 0xBFFFF1F4) = 0 0

bsdthread_register(0x92C9F6BC, 0x92C9F6E0, 0x1000) = 0 0

thread_selfid(0x92C9F6BC, 0x92C9F6E0, 0x1000) = 2500945 0

mmap(0x0, 0x2000, 0x3, 0x1002, 0x1000000, 0xAC308375) = 0x4D8000 0

mprotect(0x4D8000, 0x44, 0x1) = 0 0

mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x4D8034) = 0x4DA000 0

mprotect(0x4DA000, 0x1000, 0x0) = 0 0

mprotect(0x4E6000, 0x1000, 0x0) = 0 0

mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x4DB000) = 0x4E7000 0

mprotect(0x4E7000, 0x1000, 0x0) = 0 0

mprotect(0x4F3000, 0x1000, 0x0) = 0 0

mmap(0x0, 0x1000, 0x3, 0x1002, 0x1000000, 0x4E8000) = 0x4F4000 0

mprotect(0x4F4000, 0x1000, 0x1) = 0 0

mprotect(0x4D8000, 0x44, 0x3) = 0 0

mmap(0x0, 0x200000, 0x3, 0x1002, 0x7000000, 0x4F4000) = 0x4F5000 0

munmap(0x4F5000, 0xB000) = 0 0

munmap(0x600000, 0xF5000) = 0 0

mprotect(0x4D8000, 0x44, 0x1) = 0 0

getpid(0x4D8000, 0x44, 0x1) = 32993 0

__mac_syscall(0x973E8E8E, 0x2, 0xBFFFF0C8) = 0 0

stat64("/AppleInternal\0", 0xBFFFF130, 0xBFFFF0C8) = -1 Err#2

audit_session_self(0x92C1F4B6, 0xBFFFF130, 0xBFFFF0C8) = 5635 0

geteuid(0x92C1F4B6, 0xBFFFF130, 0xBFFFF0C8) = 0 0

getegid(0x92C1F4B6, 0xBFFFF130, 0xBFFFF0C8) = 0 0

getaudit_addr(0xBFFFF0A8, 0x30, 0xBFFFF0C8) = 0 0

csops(0x80E1, 0x7, 0xBFFFECF8) = 0 0

mmap(0x0, 0x2000, 0x3, 0x1002, 0x1000000, 0xACA5EB00) = 0x4F5000 0

mprotect(0x4F5000, 0x44, 0x1) = 0 0

mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x4F5034) = 0x600000 0

mprotect(0x600000, 0x1000, 0x0) = 0 0

mprotect(0x60C000, 0x1000, 0x0) = 0 0

mmap(0x0, 0xD000, 0x3, 0x1002, 0x1000000, 0x601000) = 0x60D000 0

mprotect(0x60D000, 0x1000, 0x0) = 0 0

mprotect(0x619000, 0x1000, 0x0) = 0 0

mprotect(0x4F4000, 0x1000, 0x3) = 0 0

mprotect(0x4F4000, 0x1000, 0x1) = 0 0

mprotect(0x4F5000, 0x44, 0x3) = 0 0

mmap(0x0, 0x200000, 0x3, 0x1002, 0x7000000, 0x4F4004) = 0x61A000 0

munmap(0x61A000, 0xE6000) = 0 0

munmap(0x800000, 0x1A000) = 0 0

mprotect(0x4F5000, 0x44, 0x1) = 0 0

getrlimit(0x1003, 0xBFFFF8DC, 0x1) = 0 0

setrlimit(0x1003, 0xBFFFF8DC, 0x1) = -1 Err#22

getrlimit(0x1008, 0xBF835C60, 0x1) = 0 0

fstat64(0x1, 0xBF836090, 0x1F) = 0 0

mmap(0x0, 0x1000000, 0x3, 0x1002, 0x2000000, 0xACA5B3E0) = 0x800000 0

munmap(0x1000000, 0x800000) = 0 0

PS2:如果删除了前面提到的链接标志,程序运行,没有错误。 但是,当我输入真实数据的程序,然后我得到

Segmentation fault: 11

我记得这个节目曾与栈中的问题,因此必须增加。 在Linux中我没有这一点,作品

const rlim_t kStackSize = 256L * 1024L * 1024L; // min stack size = 64 Mb

struct rlimit rl;

int result;

result = getrlimit(RLIMIT_STACK, &rl);

if (result == 0)

{

if (rl.rlim_cur < kStackSize)

{

rl.rlim_cur = kStackSize;

result = setrlimit(RLIMIT_STACK, &rl);

if (result != 0)

{

fprintf(stderr, "setrlimit returned result = %d\n", result);

}

}

}

但在OS X,因为没有工作,我用前面提到的链接标志,并没有问题,是OS X雪豹,这样看来我还是有OS X Lion中的堆栈溢出的问题,但链接标志不解决这个。 我能做什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值