linux - PAX 出于某种原因终止了我的进程。 (PAX 用 SIGKILL 终止我的进程)

标签 linux gcc sigkill pax

我不知道为什么 PAX 总是杀死我的进程。平台是powerpc,操作系统是Linux。从内核日志中,我可以看到如下内容:

PAX: From 147.128.23.67: execution attempt in: , 100a3000-10175000 100a3000 PAX: terminating task: /mnt/ecim/pau6000agent/bin/agent_z(agent_z):1744, uid/euid: 0/0, PC: 100a318c, SP: bbc85aa0 PAX: bytes at PC: 396001fc 4bfffbdc 39600200 4bfffbd4 39600204 gpr_get: partial register set

Google 告诉我尝试使用“paxctl -m ./agent_z”或“paxctl -z ./agent_z”,但它们都没有帮助。实际上,“agent_z”没有任何 PAX 标志。所以我真的很困惑为什么 PAX 总是杀死'agent_z'

file ./agent_z does not have a PT_PAX_FLAGS program header, try

conversion root@QorIQ:/mnt/ecim/pau6000agent/bin> paxctl -v ./agent_z PaX control v0.5 Copyright 2004,2005,2006,2007 PaX Team file ./agent_z does not have a PT_PAX_FLAGS program header, try conversion

这里是我使用的gcc的信息。而且,正如其他人所建议的,我也尝试在编译时添加 -O1/-O2/-O3 标志,但它们都不起作用。

Using built-in specs. Target: powerpc-wrs-linux-gnu Configured with: /scratch/jmyers/wrs/4.4a/src/gcc-4.4-wrs/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=powerpc-wrs-linux-gnu --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-long-double-128 --enable-targets=all --enable-secureplt --with-cpu-32=603 --with-cpu-64=970 --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --enable-shared --disable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Wind River Linux Sourcery G++ 4.4a-341' --with-bugurl=support@windriver.com --disable-nls --prefix=/opt/windriver/wrlinux/ppc --with-sysroot=/opt/windriver/wrlinux/ppc/powerpc-wrs-linux-gnu/libc --with-build-sysroot=/scratch/jmyers/wrs/4.4a/power/install/powerpc-wrs-linux-gnu/libc --with-gmp=/scratch/jmyers/wrs/4.4a/power/obj/host-libs-4.4a-341-powerpc-wrs-linux-gnu-i686-pc-linux-gnu/usr --with-mpfr=/scratch/jmyers/wrs/4.4a/power/obj/host-libs-4.4a-341-powerpc-wrs-linux-gnu-i686-pc-linux-gnu/usr --with-ppl=/scratch/jmyers/wrs/4.4a/power/obj/host-libs-4.4a-341-powerpc-wrs-linux-gnu-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/jmyers/wrs/4.4a/power/obj/host-libs-4.4a-341-powerpc-wrs-linux-gnu-i686-pc-linux-gnu/usr --with-libelf=/scratch/jmyers/wrs/4.4a/power/obj/host-libs-4.4a-341-powerpc-wrs-linux-gnu-i686-pc-linux-gnu/usr --disable-libgomp --with-license=/scratch/jmyers/wrs/4.4a/power/obj/host-libs-4.4a-341-powerpc-wrs-linux-gnu-i686-pc-linux-gnu/usr --with-csl-license-version=20110917 --with-csl-license-feature=gcc_Power_Wind_River_Linux --enable-poison-system-directories --with-debug-prefix-map='/scratch/jmyers/wrs/4.4a/power/install=/opt/windriver/wrlinux/ppc /scratch/jmyers/wrs/4.4a/src/gcc-4.4-wrs=/opt/windriver/wrlinux/ppc/powerpc-wrs-linux-gnu/src/gcc /scratch/jmyers/wrs/4.4a/power/obj/gcc-4.4a-341-powerpc-wrs-linux-gnu-i686-pc-linux-gnu=/opt/windriver/wrlinux/ppc/powerpc-wrs-linux-gnu/src/generated/gcc' --with-build-time-tools=/scratch/jmyers/wrs/4.4a/power/install/powerpc-wrs-linux-gnu/bin --with-build-time-tools=/scratch/jmyers/wrs/4.4a/power/install/powerpc-wrs-linux-gnu/bin Thread model: posix gcc version 4.4.1 (Wind River Linux Sourcery G++ 4.4a-341)

提前致谢,非常感谢您的回复。

最好的问候, 蔡俊钊

最佳答案

这两个命令可以避免被PaX查杀。

paxctl -c ./agent_z
paxctl -pemrxs ./agent_z

这可能是一种解决方法,我正在我的代码中寻找根本原因。

关于linux - PAX 出于某种原因终止了我的进程。 (PAX 用 SIGKILL 终止我的进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20268536/

相关文章:

c - 在子进程发出完成信号后,SIGKILL 将无法停止子进程

linux - 在 centos 7 上使用 websockets 安装 mosquitto 时出错

c++ - Linux 共享内存与 C++ : Segmentation Fault

c++ - 为什么这个变量被标记为 "unused"?

C++ : gcc compiler warning for large stack allocation

c++ - 在 ‘)’ token G++ 之前预期为 ‘;’

objective-c - 奇怪的 EXC_Crash (SIGKILL) 错误报告

linux - Linux 程序员如何在不使用 IDE 的情况下创建 GUI 应用程序?

c - argv[argc] 是否等于 NULL 指针

c - SIGKILL 在 spoj-LKS 中