یک اشکال در هسته لینوکس شناسایی شده است که باعث می شود برخی از برنامه هایی که از AVX استفاده می کنند نادرست عمل کنند.

در هسته لینوکس از زمان انتشار 5.2، ظاهر شد خطایی که باعث می‌شود محتوای رجیستر AVX هنگام بازگشت از یک کنترل‌کننده سیگنال نقض شود که هنگام پرتاب یک استثنا کنترل می‌شود (صفحه خطا). این مشکل هنگام اجرای برنامه های چند رشته ای ("-pthread") که شامل محاسبات با رجیستر AVX هستند، رخ می دهد، اگر هسته در GCC 9 ساخته شده باشد (اگر در نسخه های قبلی GCC ساخته شده باشد، خطا ظاهر نمی شود، زیرا GCC 9 حافظه پنهان دارد. آدرس متغیر thread-local در رجیستر، و نسخه های قبلی GCC هر بار آن را بارگیری می کنند).

این مشکل باعث می شود که برنامه با خطای خرابی حافظه، پیش از موعد متوقف شود. قابل توجه ترین و غالباً مشاهده شده خطا فولاد تصادف می کند برنامه های کاربردی، به زبان Go نوشته شده است. با توجه به مشکل ذکر شده، برنامه های Go به طور پیش از موعد خاتمه می یابند، معمولاً با خطاهای "خطای زمان اجرا: آدرس حافظه نامعتبر یا عدم ارجاع اشاره گر صفر"، "زمان اجرا: کامپیوتر بازگشتی غیرمنتظره" و "نقض تقسیم بندی". اشکال موجود در هسته رفع نشده باقی می ماند. احتمال در حال بررسی است اضافه کردن تغییرات به زمان اجرا زبان Go برای دور زدن انتخابی خطاها در هسته های مشکل ساز لینوکس، به قیمت هزینه های اضافی.

منبع: opennet.ru

اضافه کردن نظر