لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
Segmentation Fault
2006-07-24, 01:18 PM,
ارسال : #1
Segmentation Fault
این خطای Segmentation Fault برای چیه ؟ در واقع ما بر روی یک سیستم لینوکس RHEL4 نصب کردیم بعد Calamav , LinuxConf, Squirrelmailرو نصب کردیم اول درست کار می کرد اما بعد از مدتی وقتی می خواستیم سرویس sendmail رو start کنیم این خطا رو می داد و بعضی از دستورات مثل date و mkdir و ... را که می زدیم Illegal Instruction می داد وقتی که Searck کردیم یک چنین چیزی دیدیم :
Signal 11, or officially know as "segmentation fault", means that the program accessed a memory location that was not assigned.

حالا این مشکل رو چه طور می توان رفع کرد ؟؟؟ :roll:
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2006-07-24, 08:37 PM,
ارسال : #2
 
همون memory access violation است . ممکنه مشکل از shared object ها باشد. با gdb برنامه رو run کنید و با back ببینید کجا segment اتفاق می افته .
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2006-07-24, 10:12 PM,
ارسال : #3
 
از نظر سخت‌افزاری مثلا رم درسته؟

[ltr]Life *free = new Life(const long OpenSource);[/ltr]
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2006-07-26, 07:29 PM,
ارسال : #4
 
نه الن جان مشکل از سخت افزار نیست . چون اگه می بود exception سخت افزاری اتفاق می افتاد و به احتمال زیاد SIGSEGV . trap یه interrupt که نشون دهنده invalid access است . یعنی اگه مثلا شما page size حافظه ات 4k است و ادرسی که CPU تولید می کند در قسمت offset مثلا 5000 باشه خوب از مرز تجاوز کرده و باید یقه برنامه رو گرفت . CPU به خونه حافظه دست نمی زنه در عوض این intrrupt رو ایجاد می کنه و باعث بیدار شدن سیستم عامل میشه . سیستم عامل میاد پروسس رو نگاه می کنه می بینه که بله می خواسته پاشو از گلیمش درازتر کنه و متعاقب چیزی که برای سیستم عامل تعریف شده با ان رفتار میکنه که در لینکس SIGKILL است یعنی پروسس رو می کشه و روی صفحه می نویسه Segmentation Fault
خوب بعد از این کلاس اموزشی همون طور که گفتم چاره درد شما استفاده از gdb است . یه سری breakpoint بذار ببین برنامه تا کجا اجرا میشه به راحتی می تونی اون NULL pointer رو پیدا کنی . اگه از shared object ها در runtime استفاده می کنی شرط می بندم که این so ها مشکل ایجاد کردن.
نقل قول این ارسال در یک پاسخ
2006-07-26, 07:32 PM,
ارسال : #5
 
بالایی من بودم
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان