ক্রোমিয়াম ক্রনিকল #8: GWP-ASan: বন্যের মধ্যে বাগ সনাক্ত করুন

পর্ব 8: সিয়াটলে ভ্লাদ সিরক্লেভিচ দ্বারা, WA (নভেম্বর, 2019)
আগের পর্বগুলো

মেমরি নিরাপত্তা ত্রুটি ডিবাগ করা, যেমন ব্যবহারের পরে-মুক্ত বা বাফার ওভারফ্লো, কঠিন হতে পারে। অ্যাড্রেস স্যানিটাইজার (ASan) এর মতো সরঞ্জামগুলি ইউনিট পরীক্ষা এবং ফুজারগুলিতে মেমরি ত্রুটিগুলি চিহ্নিত করতে সহায়ক, তবে অনেকগুলি বাগ কেবলমাত্র ব্যবহারকারীদের কাছে মোতায়েন করার পরে প্রকাশ পায় যেখানে ASan এর ওভারহেড নিষেধজনকভাবে বেশি।

GWP-ASan হল একটি হিপ-অনলি মেমরি ত্রুটি সনাক্তকারী যা বন্য অঞ্চলে ব্যবহার করার জন্য ডিজাইন করা হয়েছে। এটি ব্যবহার-পর-মুক্ত, বাফার ওভারফ্লো/আন্ডারফ্লো এবং ডবল মুক্ত শনাক্ত করে। ASan এর বিপরীতে, এটি স্ট্যাক বা বিশ্বব্যাপী ত্রুটি সনাক্ত করে না।

বরাদ্দের একটি ক্ষুদ্র শতাংশ নমুনা করে, GWP-ASan নগণ্য মেমরি এবং কর্মক্ষমতা ওভারহেড সহ সম্ভাব্য ত্রুটি সনাক্তকরণ প্রদান করতে সক্ষম। যখন একটি নমুনা বরাদ্দের সাথে একটি মেমরি ত্রুটি ঘটে তখন GWP-ASan প্রক্রিয়াটিকে অবিলম্বে ক্র্যাশ করে দেবে । এটি বাগটি সনাক্ত করা সহজ করে তোলে কারণ ক্র্যাশটি ঠিক সেখানেই ঘটে যেখানে ত্রুটিটি তৈরি হওয়ার পরিবর্তে পরবর্তী সময়ে যখন দূষিত মেমরি ব্যবহার করা হয়।

ASan-এর মতো, GWP-ASan ক্র্যাশ রিপোর্টে মেমরি সমস্যা ডিবাগ করতে সাহায্য করার জন্য বরাদ্দ এবং ডিললোকেশন স্ট্যাক ট্রেস অন্তর্ভুক্ত । ক্র্যাশ UI-তে উপস্থাপিত কিছু অতিরিক্ত ডেটার একটি উদাহরণ ( crbug/956230 ) দেখে নেওয়া যাক:

ব্যবহার এবং ডিলোকেশন উভয়ই PDFiumEngine::ExtendSelection() থেকে উদ্ভূত হয়। উৎসটি দ্রুত দেখায় যে বাগটি একটি অবৈধ std::vector iterator এর ব্যবহার।

Windows এবং macOS-এ malloc / new এবং PartitionAlloc ব্যবহার করে বরাদ্দের জন্য GWP-ASan স্থিতিশীল চ্যানেলে সক্রিয় করা হয়েছে । অ্যান্ড্রয়েড সমর্থন চলছে। এখন পর্যন্ত 60টিরও বেশি GWP-ASan বাগ রিপোর্ট করা হয়েছে এবং প্রায় 70% সংশোধন করা হয়েছে। GWP-ASan ক্র্যাশগুলি হল সমস্ত প্রার্থীর নিরাপত্তা সংক্রান্ত সমস্যা যা শোষণযোগ্য হতে পারে তাই অনুগ্রহ করে দ্রুত সেগুলি ট্রাইজ করুন এবং প্রয়োজনে ব্যাকপোর্টের অনুরোধ করুন৷