Cygwin घातक त्रुटि रीमैप करने में असमर्थ .. इसका क्या मतलब है?


30

pythonसाइबरविन में दौड़ते समय , मुझे निम्नलिखित त्रुटि मिलती है:

    0 [main] python 6140 C:\cygwin\bin\python.exe: *** fatal error - unable to remap \\?\C:\cygwin\lib\python2.6\lib-dynload\time.dll to same address as parent: 0x2B0000 != 0x360000
Stack trace:
Frame     Function  Args
00288E68  6102749B  (00288E68, 00000000, 00000000, 00000000)
00289158  6102749B  (61177B80, 00008000, 00000000, 61179977)
0028A188  61004AFB  (611A136C, 6124112C, 002B0000, 00360000)
End of stack trace
    0 [main] python 9048 fork: child 6140 - died waiting for dll loading, errno 11
abort: Resource temporarily unavailable

इसका क्या मतलब है, और मुझे इसे ठीक करने के लिए क्या करना चाहिए?

जवाबों:


40

आपको समस्या को ठीक करने के rebaseallलिए rebaseपैकेज से कमांड चलाने की आवश्यकता है।

  1. rebaseCygwin setup.exeउपयोगिता का उपयोग करके पैकेज स्थापित करें
  2. उपयोग होने वाली सब कुछ बंद करें cygwin1.dll
  3. साइगविन खोल खोलो
  4. rebaseallप्रॉम्प्ट पर टाइप करें

रीबेसिंग आमतौर पर केवल तब आवश्यक होती है जब स्थापित पैकेज स्थापित किए जाते हैं जो गतिशील रूप से लोड किए गए पुस्तकालयों को संशोधित करते हैं। मैं rebaseallएक Cygwin में पैकेज को स्थापित या अपग्रेड करने के बाद हमेशा चलने की बुरी आदत को स्वीकार करूंगा, बजाय इसके कि आप दिखाने के लिए हिट की गई त्रुटि की प्रतीक्षा करें।

जैसे कि आपको वह त्रुटि क्यों मिली और पुन: कैसे समस्या का समाधान हो रहा है, इस पोस्ट में इसके बारे में कहना है:

आपके पास यह पीछे की ओर है। फोर्किंग स्थानांतरण को विराम नहीं देता है। रिलोकेशन फोर्किंग फोर्क। Win32 में कांटा शब्दार्थ को लागू करने के लिए cygwin1.dll को एक विशेष मेमोरी लेआउट की आवश्यकता है। यदि यह मेमोरी लेआउट बाधित है, तो कांटा टूट जाता है। Cygwin1.dll को स्थानांतरित करना आवश्यक मेमोरी लेआउट को बाधित करता है। 'रिबासाइलल' सभी सिग्विन डीएलएल का पता लगाने की पूरी कोशिश करता है जो इसे एक ऐसे लेआउट में जानता है जो टकराव से बचता है। यह आवश्यक मेमोरी लेआउट को बनाए रखता है ताकि कांटा अपना काम कर सके।


1
मैं यह कोशिश कर रहा था और यह काम नहीं कर रहा था ... कि जब तक मैं खिड़कियों को फिर से शुरू कर रहा हूं (एक रिबासिल और पीफ्लैगसाल के बाद)
जॉन एरिकसन

इयान सी: आप मेरे हीरो हैं!
स्टीफन रस्क

इसके अलावा, rebaseall को विंडोज 7.
xtofl

एक आधार पते को सुरक्षित करना कुछ मामलों में मदद कर सकता है, जैसा कि यहाँ सुझाया गया है: cygwin.com/ml/cygwin/2011-04/msg00306.html
lapo

2
आपको सामान्य सिगविन टर्मिनल के माध्यम से राख या पानी के छींटे में ऐसा करने की आवश्यकता है। इसे स्टार्ट -> रन के साथ लॉन्च करें, इसके cygwin \ usr \ bin \ ash में। एक बार राख चल रहा है, टाइप करें / usr / bin / rebaseall और हिट दर्ज करें।
मैकिज स्विक

10

इसका मतलब है कि या तो एक 3 पार्टी प्रोग्राम जैसे कि वायरस स्कैनर या डीएलएल एड्रेस रैंडमाइजेशन फीचर जो विस्टा में पेश किया गया था, ने आपकी प्रक्रिया में इस तरह से हस्तक्षेप किया है कि यह सफलतापूर्वक कांटा नहीं जा सका।

rebaseallउपयोगिता DLLs नीचे पिन करने के लिए ऐसी है कि समस्या से बचा जाता है इस्तेमाल किया जा सकता। यह डिफ़ॉल्ट रूप से स्थापित है। देखें rebaseall --helpकि यह कैसे उपयोग करने पर, और /usr/share/doc/Cygwin/rebase-3.0.1.READMEअधिक जानकारी के लिए। अगर यह मदद नहीं करता है, peflagsallतो एक और कोशिश करने लायक है।


धन्यवाद =) दोनों जवाबों ने मेरी मदद की ... लेकिन मैं केवल एक = \
जॉन एरिकसन

5

मुझे "सुन्न" संकलन के बाद भी यही समस्या थी। मरो प्रभावित dll mtrand.dll था। सरल

$ /bin/rebaseall

काम नहीं किया।

निम्नलिखित में से क्या मदद मिली: जांच करें कि क्या प्रभावित dll (इस स्थिति में time.dll) एक्यूट "रिबेट" है:

$ /bin/rebaseall -v

यदि एक सूची नहीं बनाई गई है जिसमें प्रभावित dll का पूरा पथ शामिल है। उदाहरण के लिए:

$ find /lib -name 'time.dll' > /tmp/mydll.txt

फ़ाइल में प्रति पंक्ति एक dll और भी हो सकते हैं। फिर कॉल करो

$ /bin/rebaseall -v -T /tmp/mydll.txt

जैसा कि ऊपर वर्णित है, कोई अन्य सागविन सामान नहीं चल रहा है। Time.dll को अब रीबेड किया जाना चाहिए (इसके अतिरिक्त "सामान्य" रीबैसेल तक)।

(अजीब: nt, windows2000, xp के साथ साइबरविन का उपयोग करने के 10 वर्षों में, मुझे केवल एक बार "रिबेट" करना पड़ा। एक दिन में (64 बिट) विंडो -7 के साथ यह पहले से ही neccessary था।)


2

समस्या के लिए जवाब है।

स्रोत: https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-(Windows)


माता-पिता के रूप में एक ही पते पर रीमैप करने में असमर्थ

fatal error – unable to remap \?\C:\cygwin\lib\python2.6\lib-dynload\time.dll to same address as parent: 0×360000 != 0×3E0000

यह नोड.जेएस के साथ कोई समस्या नहीं है। आधार स्थापित करें। पहले setup.exe का उपयोग करके रिबास करें, फिर सभी Cygwin इंस्टेंस को बंद करें। डैश या ऐश (साइगविन की स्थापना के तहत बिन निर्देशिका में स्थित) शुरू करें और चलाएं:

$ /bin/rebaseall -v

इसे बिना किसी त्रुटि के समाप्त करना चाहिए। यदि इसके बजाय एक त्रुटि के रूप में उपरोक्त परिणाम:

rebaseall:'/cygdrive/c/Users/ADMINI~1/AppData/Local/Temp' is not writable

साइगविन खोल खोलो और भागो:

$ chmod 777 ~/AppData/Local/Temp

अपनी शेल विंडो बंद करें और ऊपर दिए गए चरणों को दोहराएं। एक बार जब आप कर लेते हैं, तो अपने पीसी को पुनरारंभ करें। रिबासाइल का उपयोग करने से पहले सभी खुले साइगविन गोले को बंद करने के लिए याद रखें।


यदि लिंक विफल हो जाता है तो भविष्य के उपयोगकर्ताओं के लिए लिंक से जानकारी कॉपी करना अच्छा है।
paradd0x
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.