を返すとき、私は2016.3システムのランニングpetalinux習慣を持っているし、次のことを守ってください。 私はコンパイルして(システムを使用CPPを実行すると)私が手の下の例のように呼び出します:LinuxのC++システム()コールのクラッシュ機能が
をOops: kernel access of bad area, sig: 11
CPU: 0 PID: 381 Comm: Application Not tainted 4.6.0 #63
task: ce486500 ti: ce4cc000 task.ti: ce4cc000
私は端末の3つのエコーをすべて見ることができますが、私たちは決してここにはいません。 function()が復帰すると、不正領域のカーネルアクセスが現れるようです。
システムがこのように動作する可能性のある特定のカーネルまたはrootfsモジュール/設定がありませんか?
他のライブラリ関数を実行するコードが数千行あり、system()だけが失敗するようです。いくつかのより多くのデバッグ後
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
using namespace std;
void function(){
system("echo hello");
system("echo hello2");
system("echo hello3");
}
int main(int argc, char **argv){
function();
printf("We never get here\n");
return 1;
}
、問題はメイクファイル(lEasyBmp)に含まれ、ライブラリから来るように見えました。
使用しないとこの正確なエラーが発生したのはなぜなのですか?すべてのライブラリファイルが構築され、システム内に存在しますが、同じ問題が発生した人がいれば、ライブラリを含むいくつかのライブラリファイルがそれを引き起こす可能性があります。
;'ファイルスコープで、あなたは – StoryTeller
大きな問題を抱えている[なぜ悪いと考え、「名前空間stdを使用して」されています。次のような子でそれらを置く は、問題を解決しました練習?](http://stackoverflow.com/q/1452721/995714) –
チップをありがとう!私は間違いなく、コード内の名前空間stdを使用してすべてを取り除くでしょう。しかし、それは悪いカーネルアクセスの問題を解決しません – btbtbt