GapForge: Directed Compiler Fuzzing via Coverage-Gap Analysis
GapForge एक लक्षित LLM-आधारित कंपाइलर फज़िंग तकनीक है जो कम कवर की गई फाइलों को प्राथमिकता देकर, पाथ-डिफरेंस विश्लेषण के माध्यम से सूक्ष्म ट्रिगरिंग आवश्यकताओं का अनुमान लगाकर और प्रॉम्प्ट्स को पुनरावृत्ति रूप से संश्लेषित करके लॉन्ग-टेल कवरेज अंतराल को व्यवस्थित रूप से पहचानती और भरती है, जिससे यह GCC और LLVM पर कवरेज और बग खोज में मौजूदा तरीकों से काफी बेहतर प्रदर्शन करती है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके फोन, आपकी कार या इंटरनेट को चलाने वाले सॉफ़्टवेयर को एक विशाल, अदृश्य फैक्ट्री के रूप में देखें। इस फैक्ट्री के अंदर, लाखों नन्हे कर्मचारी (कोड की लाइनें) हैं जो आपके उच्च-स्तरीय निर्देशों को लेते हैं और उन्हें मशीन भाषा में बदल देते हैं जिसे कंप्यूटर समझता है। इस फैक्ट्री को कंपाइलर (compiler) कहा जाता है। यदि एक भी कर्मचारी आलसी, भ्रमित या नियम तोड़ने वाला हो जाए, तो पूरी फैक्ट्री कचरा उत्पाद बना सकती है—ऐसे प्रोग्राम जो क्रैश हो जाते हैं, फ्रीज हो जाते हैं, या गुप्त रूप से कुछ गलत करते हैं। क्योंकि ये फैक्ट्रियां इतनी विशाल और जटिल होती हैं, इसलिए यह सुनिश्चित करना अविश्वसनीय रूप से कठिन है कि हर एक कर्मचारी की निगरानी और परीक्षण किया जा रहा है।
सॉफ़्टवेयर टेस्टिंग (software testing) की दुनिया में प्रवेश करें। इसे एक निरीक्षक टीम के रूप में सोचें जो यह देखने के लिए भेजी गई है कि क्या फैक्ट्री सही ढंग से काम कर रही है। वर्षों से, निरीक्षकों ने दो मुख्य तरकीबों का उपयोग किया है: या तो वे फैक्ट्री पर रैंडम डार्ट्स (यादृच्छिक तीर) फेंकते हैं (रैंडम टेस्टिंग), या वे मौजूदा निर्देशों को मरोड़कर चीजों को तोड़ने की कोशिश करते हैं (म्यूटेशन टेस्टिंग)। लेकिन समस्या यह है कि निरीक्षक हमेशा फैक्ट्री के उन्हीं आसान-से-पहुंच वाले कोनों पर प्रहार करते रहते हैं, जिससे धूल भरे, अंधेरे और कठिन-से-पहुंच वाले पिछले कमरे पूरी तरह से अनदेखे रह जाते हैं। ये "ब्लाइंड स्पॉट" (blind spots) ही वे जगहें हैं जहाँ सबसे खतरनाक बग छिपे होते हैं, जो परेशानी पैदा करने के लिए इंतजार करते हैं। हाल ही में, वैज्ञानिकों ने लार्ज लैंग्वेज मॉडल्स (LLMs)—वह सुपर-स्मार्ट AI जो कोड लिख सकता है—का उपयोग निरीक्षण में मदद करने के लिए करना शुरू किया है। लेकिन इन AI सहायकों के साथ भी समस्या यह है कि वे अक्सर बिना किसी दिशा के भटकते रहते हैं, उन्हें ठीक से पता नहीं होता कि किन अंधेरे कोनों में सबसे अधिक रोशनी की आवश्यकता है।
यहीं पर गैपफोर्ज (GapForge) नामक एक नई तकनीक आती है, जो एक जादुई मानचित्र वाले जासूस की तरह काम करती है। केवल डार्ट्स फेंकने या अनुमान लगाने के बजाय, गैपफोर्ज फैक्ट्री के मानचित्र को देखता है ताकि यह देख सके कि किन कमरों में कभी दौरा नहीं किया गया है। फिर यह अपने AI मस्तिष्क का उपयोग यह पता लगाने के लिए करता है कि उन बंद दरवाजों को खोलने के लिए विशिष्ट "गुप्त हैंडशेक" (एक विशेष प्रकार का कोड और एक विशेष सेटिंग) की आवश्यकता क्या है। शोधकर्ताओं ने इसका परीक्षण दुनिया की दो सबसे बड़ी कंपाइलर फैक्ट्रियों, GCC और LLVM पर किया। उन्होंने पाया कि गैपफोर्ज उन छिपे हुए कमरों को खोजने में माहिर है। मात्र 72 घंटों में, इसने 68.13% GCC कोर कोड और 69.11% LLVM कोड को कवर किया। यह शायद 100% न लगे, लेकिन याद रखें, पिछले सर्वश्रेष्ठ AI तरीके ने केवल लगभग 64.62% और 65.02% ही प्रबंधित किया था। गैपफोर्ज ने केवल आंकड़ों को थोड़ा ही नहीं बढ़ाया; इसने GCC में 24,736 और LLM में 19,798 अधिक लाइनों को खोज निकाला जिन्हें अन्य तरीकों ने पूरी तरह से मिस कर दिया था।
यह कैसे करता है? गैपफोर्ज को एक तीन-चरणीय प्रक्रिया के रूप में सोचें। सबसे पहले, यह फैक्ट्री के मानचित्र को स्कैन करता है और सबसे "गंदे" कमरे को चुनता है—वह कमरा जिसमें सबसे अधिक अन-टेस्टेड (अनपरीक्षित) कोड है। दूसरा, पूरे कमरे को देखने के बजाय, यह ज़ूम करके उस विशिष्ट धूल भरे स्थान पर ध्यान केंद्रित करता है और AI से पूछता है, "हमें इस जगह को खोलने के लिए किस तरह की चाबी चाहिए?" AI उस स्थान तक पहुँचने के लिए आवश्यक कोड संरचनाओं और फैक्ट्री सेटिंग्स (जैसे कि एक विशिष्ट स्विच चालू करना) के सटीक संयोजन का अनुमान लगाने के लिए आसपास के साफ क्षेत्रों का विश्लेषण करता है। तीसरा, यदि AI एक चाबी आज़माता है और वह काम नहीं करती है, तो गैपफोर्ज उस विफलता को याद रखता है। यह AI को बताता है, "इसे दोबारा मत आज़माना; कुछ अलग कोशिश करो," और उसे एक बेहतर योजना के साथ वापस भेजता है। यह चक्र दोहराता रहता है, धीरे-धीरे लेकिन निश्चित रूप से हर अंधेरे कोने को रोशन करता है।
इसके परिणाम प्रभावशाली थे। न केवल गैपफोर्ज ने आठ अन्य शीर्ष-स्तरीय तकनीकों की तुलना में अधिक क्षेत्र को कवर किया, बल्कि इसने छाया में छिपे 12 वास्तविक दुनिया के बग्स को भी खोज निकाला। इनमें 8 क्रैश (जहाँ कंपाइलर बस हार मान लेता है और रुक जाता है) और 4 मिसकंपाइलेशन (जहाँ कंपाइलर चुपचाप एक टूटा हुआ प्रोग्राम बनाता है जो दिखने में एकदम सही लगता है) शामिल थे। शोधकर्ताओं ने दिखाया कि गैपफोर्ज की प्रक्रिया का हर हिस्सा महत्वपूर्ण था; यदि वे "मानचित्र पढ़ने", "चाबी का अनुमान लगाने", या "विफलता से सीखने" को हटा देते, तो परिणाम काफी खराब हो जाते। जबकि अन्य तरीके हजारों टेस्ट प्रोग्राम बनाने में व्यस्त थे, गैपफोर्ज ने कम लेकिन बहुत अधिक स्मार्ट प्रोग्राम बनाए, जिससे यह सिद्ध हुआ कि सॉफ़्टवेयर टेस्टिंग की दुनिया में, गुणवत्ता और दिशा अक्सर केवल मात्रा से बेहतर होती है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।