Cygwin 치명적인 오류를 다시 매핑 할 수 없습니다. 무슨 뜻입니까?


30

달릴 때 pythoncygwin에서 다음 오류가 발생합니다.

    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. Cygwin 쉘 열기
  4. rebaseall프롬프트에서 입력

리베이스는 일반적으로 동적으로로드되는 라이브러리를 수정하는 설치된 패키지가 설치된 경우에만 필요합니다. 나는 항상 달리는 나쁜 습관을 인정할 것이다rebaseallCygwin 설치에서 패키지를 설치하거나 업그레이드 한 후 오류가 발생하기를 기다리는 대신 합니다.

왜 그 오류가 발생하고 rebasing이 문제를 해결하는지에 관해서는 이 게시물에 대해 다음과 같이 말합니다.

당신은 그것을 뒤로 가지고 있습니다. 포크는 이전을 중단하지 않습니다. 재배치가 분기됩니다. cygwin1.dll은 Win32에서 포크 의미를 구현하기 위해 매우 특별한 메모리 레이아웃을 가져야합니다. 이 메모리 레이아웃이 중단되면 포크가 끊어집니다. cygwin1.dll의 위치를 ​​변경하면 필요한 메모리 레이아웃이 중단됩니다. 'rebaseall'은 알고있는 모든 Cygwin DLL을 충돌을 피하는 레이아웃으로 찾기 위해 최선을 다합니다. 이렇게하면 포크가 작업을 수행 할 수 있도록 필요한 메모리 레이아웃이 유지됩니다.


1
나는 이것을 시도하고 그것은 작동하지 않았다 ... 그것은 내가 rebaseall과 peflagsall 후 창을 다시 시작할 때까지
Jon Erickson

Ian C : 당신은 나의 영웅입니다!
Stefan Rusek

또한 rebaseall은 Windows 7에서 관리자 권한이 필요한 것 같습니다.
xtofl

여기에 제안, 어떤 경우 도움말의 기본 주소 수를 Sepcifying : cygwin.com/ml/cygwin/2011-04/msg00306.html
LAPO

2
일반적인 Cygwin 터미널을 통하지 않고 재 또는 대시로이 작업을 수행해야합니다. cygwin \ usr \ bin \ ash에있는 Start-> Run으로 시작하십시오. ash가 실행되면 / usr / bin / rebaseall을 입력하고 Enter 키를 누르십시오.
Maciej Swic

10

이는 바이러스 스캐너와 같은 타사 프로그램이나 Vista에 도입 된 DLL 주소 무작위 화 기능이 성공적으로 분기되지 못한 방식으로 프로세스를 방해했음을 의미합니다.

rebaseall유틸리티를 사용하면 DLL을 고정하여 문제를 피할 수 있습니다. 기본적으로 설치됩니다. 참조 rebaseall --help를 사용하는 방법 및 /usr/share/doc/Cygwin/rebase-3.0.1.README자세한 내용은. 도움이되지 않으면 peflagsall시도해 볼 가치가 있습니다.


감사합니다 =) 모두 대답은 나를 도와 ...하지만 난 단 하나 = \ 받아 들일 수
존 에릭슨

5

"numpy"를 컴파일 한 후에도 같은 문제가있었습니다. 영향을받는 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

위에서 설명한 것처럼 다른 cygwin이 실행되지 않습니다. time.dll은 이제 다시 기반을 두어야합니다 ( "일반"rebaseall에 추가).

(이상한 : nt, windows2000, xp와 함께 cygwin을 사용한 10 년 동안, 나는 한 번만 "리베이스 (rebase)"해야했습니다.


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에서도 문제가되지 않습니다. 먼저 setup.exe를 사용하여 base → rebase를 설치 한 다음 모든 Cygwin 인스턴스를 닫으십시오. Cygwin 설치의 bin 디렉토리에있는 대시 또는 애쉬를 시작하고 다음을 실행하십시오.

$ /bin/rebaseall -v

오류없이 완료되어야합니다. 대신 위의 결과로 다음과 같은 오류가 발생합니다.

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

Cygwin 쉘을 열고 다음을 실행하십시오.

$ chmod 777 ~/AppData/Local/Temp

쉘 창을 닫고 위 단계를 반복하십시오. 완료되면 PC를 다시 시작하십시오. rebaseall을 사용하기 전에 열려있는 모든 Cygwin 쉘을 닫아야합니다.


링크가 실패 할 경우 향후 사용자를 위해 링크에서 정보를 복사하는 것이 좋습니다.
paradd0x 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.