سؤال

عندما أركض stlport على داروين أحصل على حادث غريب. (لم ترها في أي مكان آخر غير على نظام التشغيل Mac ، ولكن نفس الشيء تمامًا في كل من I686 و PowerPC.) هذا ما يبدو عليه في GDB:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
[Switching to process 21097]
0x000000010120f47c in stlp_std::__node_alloc_impl::_M_allocate ()

قد يكون الأمر بعض الإعدادات في stlport ، لاحظت أن mac.h و macosx.h بدا بعيدًا عن الميزات. أعلم أيضًا أنه يجب أن يكون نوعًا من حالة السباق ، لأنه لا يحدث فقط عن طريق استدعاء هذه الطريقة (المسمى الضمني). يحدث الحادث بشكل أساسي عندما أدفع النظام ، حيث أقوم بتشغيل 10 مؤشرات ترابط متزامنة تقوم بالكثير من معالجة السلسلة.

النظريات الأخرى التي توصلت إليها تتعلق بعلائم البرمجيات (تكوين البرنامج النصي) و G ++ 4.2 الأخطاء (يبدو أن 4.4.3 ليس على جهاز Mac حتى الآن مع دعم Objective-C ، الذي أحتاج إلى ربطه به).

مساعدة!!! :)

تعديل: أقوم بتشغيل اختبارات الوحدة ، والتي تفعل كل أنواع الأشياء. تنشأ هذه المشكلة عندما أبدأ 10 مؤشرات ترابط تدفع النظام ؛ ويأتي دائمًا إلى Std :: String :: إلحاق في النهاية يتلخص في _M_Allocate. نظرًا لأنني لا أستطيع حتى الحصول على تفريغ النسب من الكود الذي يسبب المشكلة ، فإنني أعتقد أنني أفعل شيئًا سيئًا. هل يمكن أن يكون الأمر كذلك لأنه يحاول التنفيذ في مؤشر التعليمات 0x000 ... 000؟ هل تم تصميم Dynlibs كـ DLLs في Windows مع طاولة القفز؟ هل يمكن أن يكون طاولة القفز قد تم الكتابة عليها لسبب ما؟ من المحتمل أن يفسر هذا السلوك. (الرمز ضخم ، إذا نفدت أفكارًا أخرى ، فسوف أقوم بنشر عينة تحطّص هنا.)

هل كانت مفيدة؟

المحلول 2

كانت هذه المشكلة ناجمة عن علة تحطم غير ذات صلة, ، مما تسبب في الكتابة فوق الذاكرة مما يؤدي إلى تحطم stlport في حالتي.

نصائح أخرى

HMM .. يستخدم STLPORT التخصيصات التي تأخذ ذاكرة النظام الأساسي وتجمعها داخليًا إلى هياكل البيانات عند الحاجة.

ما عليك سوى التحقق من حدوث الحادث ، فإن الكومة الممنوحة للخيط التنفيذي كافية لحدوث تخصيص. حتى لو فشل التخصيص ، يمكن أن يحدث هذا الحادث.

لست متأكدًا من تفاصيل تخصيص STL في التكوين الحالي الذي تعمل عليه. تحقق من stl_config.h لذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top