ข้อผิดพลาดร้ายแรงที่ Cygwin ไม่สามารถทำการแมปใหม่ได้หมายความว่าอะไร


30

เมื่อทำงานpythonใน cygwin ฉันได้รับข้อผิดพลาดต่อไปนี้:

    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. ติดตั้งrebaseแพ็คเกจโดยใช้setup.exeยูทิลิตีCygwin
  2. ปิดทุกอย่างที่ทำงานที่ใช้ cygwin1.dll
  3. เปิด Cygwin shell
  4. พิมพ์rebaseallที่พรอมต์

โดยปกติแล้วการรีสตาร์ตนั้นจะต้องใช้เมื่อติดตั้งแพ็คเกจที่ติดตั้งซึ่งแก้ไขไลบรารีที่โหลดแบบไดนามิก ฉันจะยอมรับพฤติกรรมที่ไม่ดีของการทำงานเสมอrebaseallหลังจากติดตั้งหรืออัปเกรดแพคเกจในการติดตั้ง Cygwin แทนที่จะรอให้เกิดข้อผิดพลาดที่คุณพบเพื่อแสดง

สำหรับสาเหตุที่คุณมีข้อผิดพลาดและวิธีการรีบูตช่วยแก้ปัญหาโพสต์นี้มีไว้เพื่อพูดเกี่ยวกับเรื่องนี้:

คุณมีมันย้อนกลับ ทางแยกไม่ทำลายการย้ายถิ่นฐาน พักการขนย้าย cygwin1.dll ต้องมีรูปแบบหน่วยความจำที่พิเศษมากในการใช้ fork semantics ใน Win32 หากรูปแบบหน่วยความจำนี้ถูกรบกวนส้อมแยก การโยกย้าย cygwin1.dll ขัดขวางรูปแบบหน่วยความจำที่ต้องการ 'rebaseall' จะเป็นการดีที่สุดในการค้นหา Cygwin DLLs ทั้งหมดที่มันรู้จักในรูปแบบที่หลีกเลี่ยงการชน สิ่งนี้จะรักษาเค้าโครงหน่วยความจำที่จำเป็นเพื่อให้ fork สามารถทำงานได้


1
ฉันพยายามและไม่ทำงาน ... นั่นคือจนกว่าฉันจะรีสตาร์ท windows (หลังจาก rebaseall และ peflagsall)
Jon Erickson

Ian C: คุณคือฮีโร่ของฉัน!
Stefan Rusek

นอกจากนี้ rebaseall ดูเหมือนว่าต้องการสิทธิ์ผู้ดูแลระบบใน Windows 7
xtofl

การแยกที่อยู่ฐานในบางกรณีอาจช่วยได้ตามที่แนะนำที่นี่: cygwin.com/ml/cygwin/2011-04/msg00306.html
lapo

2
คุณต้องทำสิ่งนี้ด้วยเถ้าถ่านหรือเส้นประโดยไม่ต้องผ่านเทอร์มินัล Cygwin ปกติ เรียกใช้งานด้วย Start -> Run ซึ่งอยู่ใน cygwin \ usr \ bin \ ash เมื่อแอชทำงานแล้วให้พิมพ์ / usr / bin / rebaseall และกด Enter
Maciej Swic

10

หมายความว่าโปรแกรมของบุคคลที่สามเช่นเครื่องสแกนไวรัสหรือคุณลักษณะการสุ่มที่อยู่ DLL ที่นำมาใช้ใน Vista ได้แทรกแซงกระบวนการของคุณในลักษณะที่ไม่สามารถแยกได้สำเร็จ

rebaseallยูทิลิตี้สามารถนำมาใช้ในการปักลงที่กำลังดังกล่าวว่าปัญหาที่จะหลีกเลี่ยง มันติดตั้งโดยค่าเริ่มต้น ดูrebaseall --helpวิธีการใช้งานและ/usr/share/doc/Cygwin/rebase-3.0.1.READMEรายละเอียดเพิ่มเติม หากไม่ช่วยpeflagsallก็เป็นอีกหนึ่งความพยายามที่คุ้มค่า


Thanks =) ทั้งสองคำตอบช่วยฉันออกมา ... แต่ฉันยอมรับได้เพียงหนึ่ง = \
Jon Erickson

5

ฉันมีปัญหาเดียวกันหลังจากรวบรวม "numpy" Die ได้รับผลกระทบ dll เป็น mtrand.dll ง่าย

$ /bin/rebaseall

ไม่ทำงาน.

สิ่งที่ช่วยแก้ไขมีดังต่อไปนี้: ตรวจสอบว่า dll ที่ได้รับผลกระทบ (ในกรณีนี้เป็นเวลา.dll) หรือไม่ "rebased" โดยอัตโนมัติ:

$ /bin/rebaseall -v

หากไม่ได้สร้างรายการที่มีเส้นทางแบบเต็มของ dll ที่ได้รับผลกระทบ เช่น:

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

ไฟล์นี้อาจมีที่กำลังมากขึ้นหนึ่งรายการต่อบรรทัด จากนั้นโทร

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

โดยไม่มีสิ่ง cygwin อื่น ๆ ทำงานตามที่อธิบายไว้ข้างต้น time.dll ควรได้รับการรีบูทในขณะนี้ (เพิ่มเติมจาก rebaseall "ปกติ")

(แปลก: ใน 10 ปีของการใช้ cygwin กับ nt, windows2000, xp ฉันต้อง "rebase" เพียงครั้งเดียวในวันเดียวกับ (64 บิต) หน้าต่าง -7 นี่เป็นสิ่งที่จำเป็นแล้ว)


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

นี่ไม่ใช่ปัญหาของ node.js เช่นกัน ติดตั้ง base → rebase โดยใช้ setup.exe ก่อนจากนั้นจึงปิดอินสแตนซ์ Cygwin ทั้งหมด เริ่มเส้นประหรือเถ้า (อยู่ในไดเรกทอรี bin ภายใต้การติดตั้งของ Cygwin) และเรียกใช้:

$ /bin/rebaseall -v

ควรเสร็จโดยไม่มีข้อผิดพลาด หากผลลัพธ์ข้างต้นมีข้อผิดพลาดดังนี้:

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

เปิด Cygwin shell แล้วเรียกใช้:

$ chmod 777 ~/AppData/Local/Temp

ปิดหน้าต่างเชลล์และทำตามขั้นตอนข้างต้นซ้ำ เมื่อเสร็จแล้วให้รีสตาร์ทพีซีของคุณ อย่าลืมปิด Cygwin shells ทั้งหมดก่อนที่จะใช้ rebaseall


เป็นการดีที่จะคัดลอกข้อมูลจากลิงก์สำหรับผู้ใช้ในอนาคตในกรณีที่การเชื่อมโยงล้มเหลว
paradd0x
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.