Rozszerzenia Git: błąd Win32 487: nie można zarezerwować miejsca na stertę Cygwina, błąd Win32 0

Rozszerzenia Git: do wczoraj wszystko działało dobrze.

Ale nagle dostaję ten błąd, gdy próbuję wyciągnąć niektóre repozytoria za pomocą git extensions

C:\Program Files\Git\bin\git.exe pull --progress "origin" 
Done
    0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x390000, State 0x10000
C:\Program Files\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0

Dzieje się to dla wszystkich repozytoriów, które sklonowałem. Ale, mój Git bash działa dobrze. Nie mam pojęcia, co się dzieje. Wiesz, dlaczego tak się dzieje?

Author: Uchia Itachi, 2013-08-29

14 answers

Cygwin używa trwałych sekcji pamięci dzielonej, które czasami mogą ulec uszkodzeniu. Objawem tego jest to, że niektóre programy Cygwin zaczynają zawodzić, ale inne aplikacje nie mają wpływu. Ponieważ te sekcje pamięci współdzielonej są trwałe, często konieczne jest ponowne uruchomienie systemu , aby je usunąć, zanim problem zostanie rozwiązany.

 233
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-04 09:15:15

Miałem ten sam problem. Znalazłem rozwiązanie tutaj http://jakob.engbloms.se/archives/1403

c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll
Dla mnie rozwiązanie było nieco inne. To było
C:\Program Files (x86)\Git\bin>rebase.exe -b 0x50000000 msys-1.0.dll

Przed rebase DLL, należy upewnić się, że nie jest używany:

tasklist /m msys-1.0.dll

I wykonaj kopię zapasową:

copy msys-1.0.dll msys-1.0.dll.bak

Jeśli polecenie rebase nie powiedzie się z czymś w rodzaju:

ReBaseImage (msys-1.0.dll) nie powiodło się z ostatnim błędem = 6

Będziesz musiał wykonać następujące czynności kroki w kolejności:

  1. skopiuj bibliotekę dll do innego katalogu
  2. przerobić kopię za pomocą powyższych poleceń
  3. Zastąp oryginalną bibliotekę dll kopią.

Jeśli jakiś problem uruchom polecenia jako Administrator

 382
Author: zainengineer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-29 08:33:10

TL;dr: Install 64-bitowy Git dla Windows 2.


Dane techniczne

      0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68570000, RegionSize 0x2A0000, State 0x10000
PortableGit\bin\bash.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0

Ten objaw sam w sobie nie ma nic wspólnego z bazami obrazów plików wykonywalnych, uszkodzonymi sekcjami pamięci współdzielonej Cygwina, sprzecznymi wersjami bibliotek DLL itp.

Jest to kod Cygwina, który nie przydzielił kawałka pamięci o rozmiarze ~5 MB na jego stertę pod tym stałym adresem 0x68570000, podczas gdy tylko dziura o rozmiarze ~2,5 MB była tam najwyraźniej dostępna. Odpowiedni kod można zobaczyć w źródło msysgit .


Dlaczego ta część przestrzeni adresowej nie jest wolna?

Może być wiele powodów. W moim przypadku było to kilka innych modułów załadowanych pod sprzecznym adresem:

Moduły procesów w Process explorer

Ostatni adres to około 0x68570000 + 5 MB = 0x68c50000, ale istnieją biblioteki DLL związane z WOW64 załadowane od 0x68810000 w górę, które blokują alokację.

Za każdym razem, gdy jest jakiś współdzielony DLL, Windows w ogóle próbuje załadować go na ten sam adres wirtualny we wszystkich procesach, aby zapisać pewne przetwarzanie relokacji. To tylko kwestia pecha, że te komponenty systemu zostały w jakiś sposób załadowane pod sprzecznym adresem tym razem .


Dlaczego w Twoim Git jest Cygwin?

Ponieważ Git jest bogatym pakietem składającym się z kilku niskopoziomowych poleceń i wielu przydatnych narzędzi, a głównie rozwijanym na systemach uniksopodobnych. Aby móc go zbudować i uruchomić bez masowego przepisywania, musi co najmniej częściowo Uniksopodobne środowisko.

Aby to osiągnąć, ludzie wymyślili MinGW i MSYS - minimalny zestaw narzędzi do tworzenia programów w systemie Windows w sposób podobny do Uniksa. MSYS zawiera również bibliotekę współdzieloną msys-1.0.dll, która pomaga w niektórych problemach ze zgodnością między obiema platformami podczas wykonywania. A wiele z nich zostało zabranych Cygwinowi, bo ktoś już musiał tam rozwiązywać te same problemy.

Więc to nie Cygwin, tylko MinGW / Align = "left" /

W Cygwinie ten kod bardzo się zmienił od tego, co jest w MSYS 1.0 - ostatni komunikat commit dla ten plik mówi "Importuj Cygwin 1.3.4", który pochodzi z 2001 roku!

Zarówno obecny Cygwin , jak i nowa wersja MSYS - MSYS2-mają już inną logikę, która, miejmy nadzieję, jest bardziej wytrzymała. To tylko stare wersje Git dla Windows, które zostały jeszcze zbudowane przy użyciu starych zepsutych MSYS system.


Czyste roztwory:

  • Install Git for Windows 2 - jest zbudowany z nowego, prawidłowo utrzymanego MSYS2 , a także ma wiele nowych funkcji, mnóstwo poprawek błędów, ulepszeń bezpieczeństwa i tak dalej. Jeśli w ogóle jest to możliwe, zaleca się również użycie 64-bitowej wersji. Jednak obejście rebase jest wykonywane automatycznie za kulisami dla systemów 32-bitowych, więc prawdopodobieństwo wystąpienia problemu powinno być niżej też.
  • po prostu ponowne uruchomienie komputera, aby wyczyścić przestrzeń adresową (Ładowanie tych modułów pod innym losowym adresem) może działać, ale tak naprawdę, wystarczy uaktualnić do Git dla Windows 2, aby uzyskać poprawki zabezpieczeń, jeśli nic innego.

Rozwiązania Hacky:

  • zmiana PATH może czasami działać, ponieważ mogą istnieć różne wersje msys-1.0.dll w różnych wersjach Gita lub innych aplikacji opartych na MSYS, które mogą używać innego adresu, różnej wielkości tego sterta itp.
  • Rebasing msys-1.0.dll może być stratą czasu, ponieważ 1) jest DLL, ma już informacje o relokacji i 2) " w każdej wersji systemu operacyjnego Windows nie ma gwarancji, że (...) DLL zawsze ładuje się w tej samej przestrzeni adresowej " anyway (source ). Może to pomóc tylko wtedy, gdy msys-1.0.dll sama ładuje się pod adresem kolidującym, którego próbuje użyć. Najwyraźniej czasami tak jest, ponieważ to jest to, co chłopaki z Git dla Windows robią automatycznie na 32-bitowym systemy .
  • biorąc pod uwagę powyższe ustalenia, pierwotnie binary poprawiłem msys-1.0.dll binarny, aby użyć innej wartości dla _cygheap_start i to natychmiast rozwiązało problem.
 138
Author: Yirkha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:30

Bardzo prosta wersja rozwiązania rebase:

Przejdź do folderu, w którym Git jest zainstalowany, np.:

C:\Program Files (x86)\Git\bin

Przytrzymując shift i klikając prawym przyciskiem myszy w folderze, powinieneś być w stanie otworzyć wiersz polecenia jako administrator stamtąd (dzięki https://stackoverflow.com/users/355389/darren-lewis za ten komentarz),

Następnie uruchom:

rebase.exe -b 0x50000000 msys-1.0.dll

To naprawiło mi to, gdy podejście do restartu nie działało.

Mam nadzieję, że to pomoże.
 32
Author: Tisch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:03

Widziałem ten sam komunikat o błędzie po aktualizacji do git1.8.5.2:

Po prostu poszukaj wszystkich msys-1.0.dll na swoim C:\ DYSKU i spraw, aby ten używany przez Git był pierwszy.

Na przykład, w moim przypadku po prostu zmieniłem kolejność:

C:\prgs\Gow\Gow-0.7.0\bin\msys-1.0.dll
C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\msys-1.0.dll

Sprawiając, że ścieżka Gita C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\ będzie pierwsza w moim %PATH%, komunikat o błędzie zniknął.

Nie trzeba restartować ani nawet zmieniać sesji DOS.
Po zaktualizowaniu %PATH% w tej sesji DOS, komendy git po prostu praca.


Zauważ, że carmbrester i Sixto Saez zgłaszają poniżej (w komentarzach) konieczność ponownego uruchomienia w celu rozwiązania problemu.
Uwaga: Po Pierwsze, również usunięcie dowolnego msys-1.0.dll, Jak jeden w %LOCALAPPDATA%

 13
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:31

Jeśli reboot nie rozwiąże problemu (jak sugeruje odpowiedź Grega Hegwilla), sprawdź ścieżkę pod kątem sprzecznych instalacji msys-1.0.dll (i ewentualnie inne pokrewne biblioteki DLL).

W mojej szczególnej sytuacji instalacja MinGW msys ma kopię tej biblioteki DLL w swoim katalogu bin (<MinGW_Install_Path>\msys\1.0\bin) i została wymieniona w ścieżce. Katalog cmd Gita był wymieniony w ścieżce, ale jego bin nie był. (Wersja Git msys-1.0.dll znajduje się w katalogu bin. Najwyraźniej domyślne instalacja MSys-Git nie dodaje swojego bin do ścieżki.)

Tymczasową poprawką było dodanie katalogu bin Gita do ścieżki tak, aby pojawił się przed ścieżkami MinGW. (Bardziej stała poprawka prawdopodobnie będzie polegała na uporządkowaniu konfliktów ścieżek między msys MinGW i Gitem i / lub usunięciu zduplikowanych instalacji msys.)

 8
Author: RobertB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-31 19:34:44

Chcę się podzielić moim doświadczeniem. Natknąłem się na ten sam problem podczas kompilacji krzyżowej dla platformy MTK na komputerze z systemem Windows 64 bit. MinGW i MSYS są zaangażowane w proces budowy i ten problem pojawił się. Rozwiązałem to zmieniając plik msys-1.0.dll. Ani rebase.exe ani restart systemu nie zadziałały dla mnie.

Ponieważ nie ma rebase.exe zainstalowany na moim komputerze. Zainstalowałem cygwin64 i użyłem rebase.exe wewnątrz:

C:\cygwin64\bin\rebase.exe -b 0x50000000 msys-1.0.dll

Chociaż zmiana rozmiaru wyglądała na udaną, błąd pozostał. Następnie uruchomiłem rebase komendę w terminalu Cygwin64 i dostałem błąd:

$ rebase -b 0x50000000 msys-1.0.dll
rebase: Invalid Baseaddress 0x50000000, must be > 0x200000000

Później próbowałem kilku adresów, ale żaden z nich nie zadziałał. Więc zmieniłem plik msys-1.0.dll i to rozwiązało problem.

 2
Author: radiohead,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-07 15:11:08

Wpadłem na to dzisiaj. Kierując się odpowiedzią Grega Hewgilla, spojrzałem na uruchomione procesy w moim systemie, aby zobaczyć, czy coś zostało "zablokowane" lub czy inni użytkownicy byli zalogowani na maszynie robiąc cokolwiek z Gitem. Następnie uruchomiłem cygwin (zainstalowany osobno) na tej konkretnej maszynie. Wystartował ok. Zamknąłem go, a następnie ponownie spróbowałem rozszerzeń Git (próbowałem operacji pull) i zadziałało. Nie wiem, czy uruchomienie Cygwina wyczyściło coś, co zostało udostępnione, ale to pierwszy raz, gdy biegłem w ten błąd i wydawało się, że to naprawić dla mnie.

 1
Author: P_O,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-08 17:28:07

Miałem ten sam problem, po jakiejś awarii Windows 8.0 i aktualizacji, na msys git 1.9. Nie znalazłem żadnego msys / git w mojej ścieżce, więc po prostu dodałem go w Ustawieniach lokalnego użytkownika Windows envinroment. Działa bez ponownego uruchamiania.

Zasadniczo podobne do RobertB, ale nie miałem żadnego git/msys na swojej drodze.

Btw:

  1. Próbowałem użyć rebase-B blablabla msys.dll, ale miał błąd " ReBaseImage (msys-1.0.dll) nie powiodło się z ostatnim błędem = 6"

  2. Jeśli potrzebujesz tego szybko i nie masz czasu na debugowanie, zauważyłem " Git Bash.vbs " w katalogu Git pomyślnie uruchamia powłokę bash.

 1
Author: Koshmaar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-19 11:52:38

Ten błąd zdarza się bardzo rzadko na moim komputerze z systemem Windows. Skończyło się na ponownym uruchomieniu maszyny i błąd zniknął.

 1
Author: IgorGanapolsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-27 19:48:40

Zetknąłem się z tym problemem podczas budowania LPCEXpresso.jeśli masz C:\MinGW\bin na ścieżce. jakoś musiałem go usunąć, aby pozbyć się tego problemu, ponieważ niektóre inne MinGW jak na podstawie zbyt

 0
Author: Prashanjit Ghosh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-20 06:36:47

Aby naprawić ten problem, po prostu pozwalam Gitowi Tortoise zainstalować jego aktualizację.

 0
Author: Jace Browning,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-22 18:27:37

C:\msysgit\bin > rebase.exe-b 0x50000000 msys-1.0.dll

 0
Author: sebahattin çatal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-08 09:10:31

Usunięcie starej wersji %USERPROFILE% \ AppData \ Local\SourceTree\app-x. X. X zadziałało. Nie wiem, jak to było połączone z git linii poleceń...

 0
Author: barbalion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-04 15:20:39