誰かがこの「無限の」ループを素早くsegfaultsする理由を説明できますか?例えば は、我々はこの機能を持っているとしましょう:bashスクリプトのsegfaults on brk()
#!/bin/bash
foo() {
foo
}; foo
これは8-10秒後にセグメンテーションフォールト。 straceのを経由して調べる、我々はBRK(の多くを見ることができます)呼び出し:
brk(0x2e11000) = 0x2e11000
brk(0x2e12000) = 0x2e12000
brk(0x2e13000) = 0x2e13000
brk(0x2e14000) = 0x2e14000
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7ffcddf5ff68} ---
+++ killed by SIGSEGV +++
Segmentation fault
私の質問は以下のとおりです。メモリ空間にマップされていない領域にアクセスしようとしているので、
- は、このセグメンテーションフォルトである(経由brk)?
- 「はい」の場合、なぜそれにアクセスしようとしていますか?
- ここではmalloc()をおすすめしますか?
- これに余分な/トリビアの情報がある場合、それは高く評価されます。
私は、再帰のスタック破損に関連していると思います。 – Inian