SDL ऐप चलाने के बाद कंसोल बेकार है


22

जब कुछ एसडीएल- आधारित प्रोग्राम (जैसे prboom , dosbox ) कंसोल (एक्स नहीं) से चलाए जाते हैं और किसी कारण से अचानक समाप्त हो जाते हैं (जैसे मारे गए या segfaults), स्क्रीन लॉक हो जाती है; यह सिर्फ काला होता है, और तब तक काला रहता है जब तक आप रिबूट नहीं करते।

यह hello_video और hello_triangle डेमो के साथ विपरीत है जो कंसोल को उसकी मूल स्थिति में लौटाते हैं भले ही उन्हें अचानक समाप्त कर दिया गया हो।

क्या वास्तव में यहाँ गलत हो रहा है, और क्या बिना रीबूट के इसे ठीक करने का एक तरीका है?

मैंने इसे डेबियन स्क्वीज़ में देखा है । मुझे नहीं पता कि अन्य ओएस प्रभावित हैं या नहीं।


संपादित करें : मुझे केवल कंसोल (एचडीएमआई / आरसीए आउटपुट, यूएसबी कीबोर्ड) को स्पष्ट करना चाहिए, एसएस कनेक्शन (जो ठीक काम करने के लिए नहीं)।


क्या आप दबाए जा सकने वाले दूसरे ट्टी में बदल सकते हैं alt+F1-5?
Jivings

@ जीव, नहीं, उन प्रमुख संयोजनों का कोई प्रभाव नहीं है।
फाइन

हम्म .. क्या आप SysRq और REISUB कमांड का उपयोग कर सकते हैं ?
Jivings

@Jingsings नहीं, लेकिन (1) रिबूट करने की क्षमता समस्या नहीं है: मैं ssh कनेक्शन से शटडाउन कमांड जारी कर सकता हूं और (2) मैं एक ऐसा समाधान ढूंढ रहा हूं जिसमें रिबूट करने की आवश्यकता नहीं है।
फाइनव

ओह शश। अपने ssh प्रॉम्प्ट में आप एक्स सर्वर को मार सकते हैं और पुनः आरंभ कर सकते हैं। या रनवे को पुनः आरंभ करें।
Jivings

जवाबों:


6

यह लगभग निश्चित रूप से ग्राफिक्स ड्राइवर में एक बग है। ऐसा लगता है जैसे कि SDL ग्राफिक्स API को इनिशियलाइज़ कर रहा है, जिस बिंदु पर ग्राफिक्स ड्राइवर डिस्प्ले को लेता है। क्योंकि आपने SDL को मार दिया है, इसने कभी भी ग्राफिक्स एपीआई को डिसेंटर्लाइज करने के लिए कोड नहीं चलाया, और इसलिए यह सिर्फ ग्राफिक्स कमांड के इंतजार में बैठा है जो कभी नहीं आएगा।

यह एक बुरी तरह से डिज़ाइन किए गए ग्राफिक्स एपीआई को इंगित करता है, लेकिन क्योंकि पूरी चीज मालिकाना है इसलिए इसे जानने का कोई तरीका नहीं है और इसे ठीक करने का कोई तरीका नहीं है।

(मैंने एक पीसी पर समान व्यवहार देखा है, जहां एसडीएल माउस पॉइंटर को "पकड़" लेता है और अगर यह दुर्घटनाग्रस्त हो जाता है या मारा जाता है, तो इसे अनब्रैब नहीं करता है, लेकिन डिस्प्ले के साथ कभी नहीं।)


1
SDL के पास एक "पैराशूट" है, जो सामान्य रूप से साफ-सफाई के मामले में भी साफ-सुथरा रहता है, इसलिए कुछ सही नहीं है।
फ्लेक्सो

पैराशूट केवल SIGSEGV को पकड़ेगा, SIGKILL को नहीं।
एलिस्टेयर बुक्सटन

यह दिलचस्प है, मुझे SIGKILLGLES2 डेमो में से एक को भेजने की कोशिश करनी होगी और देखना होगा कि क्या होता है।
फिन जुव

मैं 2017 में एक SDL ऐप विकसित कर रहा हूं और अभी भी लगता है कि संभवतः SDL ऐप को छोड़ने के लिए CTRL-C का उपयोग करने के साथ एक बग हो सकता है। मुझे समस्या थी कि एसडीएल और टर्मिनल इनपुट धीरे-धीरे अनुत्तरदायी हो जाएंगे, जब मैं ऐप का परीक्षण कर रहा था, बार-बार इसे चला रहा था और सीटीआरएल-सी के साथ छोड़ रहा था। मैंने पाया है कि अगर मैंने एसडीएल ऐप के भीतर से ऐप को ठीक से छोड़ दिया तो मुझे कभी समस्या नहीं होती है।
पॉल स्लोकम

1

मुझे पता है कि यह एक बहुत पुराना सवाल है, लेकिन मैं इस तरह की समस्या में चल रहा था जब एमुपनोग्राफ के माध्यम से Mupen64Plus चला रहा था। मेरा कंसोल ठीक दिखाई देगा, लेकिन जब तक मैं रिबूट नहीं करता, कीबोर्ड पूरी तरह से अनुत्तरदायी होगा।

समस्या यह थी कि कार्यक्रम समाप्त होने के बाद कीबोर्ड रॉ मोड में शेष था। इसका समाधान शेल स्क्रिप्ट के अंत में निम्नलिखित पंक्ति को जोड़ना था जो इसे चलाता था kbd_mode -a:। यह कीबोर्ड को XLATE मोड पर रीसेट करता है और इसे फिर से काम करने में सक्षम बनाता है।

हालांकि यह समस्या के "ब्लैक स्क्रीन" भाग को हल नहीं करता है, मैं अनुमान लगा रहा हूं कि वीडियो को वापस लाने के लिए कंसोल फ्रेमबफ़र को रीसेट करने का एक अनुरूप तरीका होना चाहिए।


-5

मैं यह नहीं कह सकता कि SDL ऐप में क्या समस्या है, लेकिन सिर्फ टाइप करना:

reset

कंसोल को फिर से उपयोग करने योग्य बनाना चाहिए


4
... कैसे वह टाइप करने के लिए माना जाता है कि अगर सांत्वना बेकार है?
जीव

1
जीवांश ने क्या कहा। कीबोर्ड अनुत्तरदायी AFACT है, यह केवल स्क्रीन नहीं है।
फाइनव

और इस कमांड को ssh (रीडायरेक्टिंग टू / देव / tty1) से जारी करने से भी मदद नहीं मिली।
फाइनव

आपको अपना उत्तर हटा देना चाहिए ताकि आप विस्मरण में लापरवाही न करें
एलेक्स एल

3
बोनस के रूप में आपको सहकर्मी दबाव बिल्ला मिलेगा
डेविड साइक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.