/ / perl.exe грешка при пренастройката при cygwin - perl, cygwin

perl.exe remap грешка при cygwin - perl, cygwin

Моята Cygwin среда (Windows 7 O / S) е развила странен проблем. Преди няколко дни бях изпълнявал perl скрипт добре, но днес получавам

0 [main] perl 5056 C:cygwinbinperl.exe: *** fatal error - unable to remap \?C:cygwinlibperl
55.10i686-cygwinautoSocketSocket.dll to same address as parent: 0x8F0000 != 0x960000
Stack trace:
Frame     Function  Args
0088B508  6102749B  (0088B508, 00000000, 00000000, 00000000)
0088B7F8  6102749B  (61177B80, 00008000, 00000000, 61179977)
0088C828  61004AFB  (611A136C, 6123E0FC, 008F0000, 00960000)
End of stack trace

Опитах да изпълня ребаза, както ви посъветвах тук но проблемът продължава. Всеки отговор оценявам, тъй като утре имам демо, за което е необходим този скрипт. Не очаквах проблем като този!

Отговори:

3 за отговор № 1

Това е полу-информиран отговор, тъй като имах подобна трудност и накрая се развихрях, докато проблемът изчезне.

rebaseall без аргументи ще преобърне всички dll файлове, инсталирани от пакети на cygwin. Въпреки това често ще имате много други dlls от други програми, които сте изградили и инсталирали, включително от инсталирани Perl модули с XS код, и ще трябва да кажете rebaseall някак си за тези модули.

Може да има по-лесен начин да направите това и се надявам, че не съм забравил никакви стъпки, но мисля, че имах някакъв успех да направя нещо подобно:

  1. Вземете списък на всички dll в системата ви, които се изпълняват под cygwin. Може би нещо подобно find /bin /lib /usr /home -name *.dll > /tmp/file1
  2. излезте от всички cygwin процеси, отворете като ash или dash от командния ред на Windows и стартирайте /bin/rebaseall -v > /tmp/file2, Най- -v Превключвателят задава флаг Verbose в rebase който изброява всички файлове, които се презареждат с настройката по подразбиране.
  3. употреба /tmp/file1 и /tmp/file2 да създадете нов файл, да речем /tmp/file3 с пълния списък с файлове, които ще искате да ребаза. От това, което си спомням, това е важно за dlls на системата (всички файлове в /tmp/file2) да бъдат изброени първо,
  4. Сега тичай rebaseall -v -T /tmp/file3 (в пепел, след затваряне на всички cygwin процеси и т.н.). Обърнете внимание на изхода. Ако има съобщения за грешки за преосмислянето на конкретна dll, премахнете този запис от /tmp/file3 и опитайте отново.

Това може да не реши проблема ви, но може би ще ви донесе по-голямата част от пътя. Ако в крайна сметка го разберете, надявам се да се върнете и да попълните някои от дупките в това решение.


0 за отговор № 2

Мисля, че е полезно да се отбележи това за повечетохората, които се впускат в това просто "rebaseall" без никакви аргументи изглежда да разреши този въпрос. Ще публикувам връзка към много полезен блог от My Life, Starting up (нямам връзка с този блог):

http://www.mylifestartingup.com/2009/04/fatal-error-unable-to-remap-to-same.html

Списъкът с действия (копиран директно от блога) е:

Нека ви кажа какво можете да направите, ако не се интересувате какво се случва.

1) Затворете Cygwin (и всички cygwin процеси).

2) Отворете командния ред на Windows (start -> run -> напишете "cmd" или във Vista: start -> напишете "cmd" в началния прозорец за търсене)

3) Отидете във вашата директория на bg cygwin. За мен това е c: cygwinbin.

4) Тип пепел

5) Въведете "/ usr / bin / rebaseall"

6) Разрешете всички грешки (имах предупреждение, което остава неразрешено и все още работи добре)

7) Рестартирайте ... и трябва да сте добри.

И ако се интересувате какво точно се случва, прочетете статията в блога, в допълнение към отговора на тълпата по този въпрос.