Хэл шинжлэлийн нэгэн судалгаа хийхээр С дээр нэгэн 35MB бичвэр файлыг уншиж 2800000 элемент бүхий тэмдэгт мөр массив зарлаад уншиж авах гэтэл “Segmentation fault” гэсэн алдаа өгөөд салдаггүй. Програм бол яг зөв бичигдсэн тул нэлээн гайхаад гар debug хийж эхлэв. Ингээд юу ч гэсэн HEAP/Stack ой дүүрсэн юм болов уу гэж бодоод массивыг 1000000 болгоод зарлаад үзтэл зүгээр ажиллаж байнаа. Ингээд энэ тухай асуудлыг гүүглээр нэлээн хайгаад олигтой үр дүнд хүрсэнгүй. Миний гол зорилго Stack ойг GCC компялерт нэмж өгч хөрвүүлэх арга хайв. Ингээд юу ч гэсэн миний Stack ой яг хэд байгааг мэдэхээр

 ulimit -a гээд ажиллуулаад үзтэл:
...
stack size              (kbytes, -s) 8172 
...

гээд гараад ирж байнаа. Үүнийг ядаж 32 MB болгохоос нааш миний програм ажиллахгүй нь тодорхой. Ингээд

ulimit -s 32768

гээд үзтэл stack ойг нэмчихэж байнаа. Програм маань ч дурайтал ажиллав. Харин Виндовс эсвэл өөр систем дээр ажиллахгүй. Энэ програм нь олон нийтэд тараагдахгүй зөвхөн шинжилгээ хийхэд хэрэглэгдэх тул миний хувьд ямар ч гэсэн асуудал арилаад хэрэгцээг хангаад болоод явчихлаа.


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *