2012-07-10 18 views
15

Kể từ vài ngày trước, mỗi khi tôi bắt đầu Git GUI trong một kho lưu trữ, nó sẽ hiển thị thông báo lỗi khủng khiếp này và bỏ sau khi tôi nhấn OK:Git GUI treo mỗi khi nó mở ra một kho lưu trữ

prepare-commit-msg hook failed: 

     0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487 
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x260000, State 0x10000 
C:\Program Files (x86)\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0 

You must correct the above errors before committing. 

Nó chỉ xảy ra với Git GUI và chỉ khi trong kho (cũ hoặc mới được tạo). Các lệnh phổ biến trong Git Bash bao gồm cả việc commit tốt.

Gỡ cài đặt và cài đặt lại với gói mới hơn (chỉ thay đổi phiên bản nhỏ) đã không xóa sự cố. Nó vẫn xảy ra với các kho cũ cũng như với các kho lưu trữ mới được tạo ra.

Trên một máy sạch, vấn đề này không tái tạo, vì vậy tôi đoán nó là cái gì đó trên hộp của tôi, nhưng tôi không nhớ cài đặt bất cứ điều gì buồn cười. Tôi nhớ là đã tắt hộp của mình sau một thời gian dài, vì vậy có lẽ một số Windows Update có thể đã kích hoạt điều này - điều đó cũng giải thích tại sao máy kia không bị ảnh hưởng - đó là 2-3 tháng kể từ lần cập nhật cuối cùng ở đó.

Bất kỳ ý tưởng nào về cách làm sáng tỏ điều này? (Như tôi chỉ có thể nhìn thấy nó trên máy tính duy nhất, tôi không cảm thấy như gửi nó để theo dõi chính thức trước khi tôi biết đó không phải lỗi của tôi ứng dụng/khác ...)


Cập nhật sau bình luận đầu tiên:

  • Nếu bạn xóa hoặc đổi tên tập lệnh móc, nó có hoạt động không?

    Hài hước đủ, nhưng tập lệnh móc thực sự không tồn tại chút nào (không có tập lệnh móc là hiện tại - chỉ có * .sample tệp trong .git \ hooks). Thậm chí ở những nơi khác (git chương trình dir vv)

  • vết nó để bạn biết những gì lệnh nó chạy - từ git-bash chạy git gui --trace

    Thật đáng buồn này bất cứ điều gì không ra vào vỏ . Hành vi là như nhau.

  • Có thể lấy gdb trong đó.

    Tôi đã thử nhưng gdb không xuất ra bất kỳ điều gì hữu ích. Tuy nhiên, tôi không có bất kỳ kinh nghiệm với GDB, tôi có thể làm sai. Tôi nhận được một MinGW's gdb, chạy nó từ dấu nhắc lệnh với git.exe làm đối số và sau đó chạy run gui. gdb không ra bất cứ điều gì thú vị:

    (gdb) run gui 
    Starting program: C:\Program Files (x86)\Git\bin\git.exe gu 
    [New Thread 8264.0x1ce4] 
    [New Thread 8264.0x394] 
    [Inferior 1 (process 8264) exited with code 01] 
    (gdb) 
    

    Nhưng tôi gần như chắc chắn tôi đang làm nó sai, vì vậy lời khuyên là chào đón nhiều hơn :)

  • Hãy chắc chắn rằng bạn không có Cygwin được cài đặt hoặc ít nhất là nó không có trong số PATH của bạn tại tất cả

    Tôi đã cài đặt Cygwin (như tôi luôn có trước khi git bị hỏng).Từ Cygwin, tôi chỉ có có trong một số đường dẫn * .bat và một số tệp * .dll, nhưng tôi đã kiểm tra với ProcMon rằng nó không chạm vào chúng và thậm chí nếu tôi xóa chúng khỏi đường dẫn, tôi vẫn nhận được sự cố tương tự.

+1

Nếu bạn loại bỏ hoặc đổi tên kịch bản móc, nó hoạt động? '.git/hooks/preparation-commit-msg' – fork0

+2

Theo dõi nó để bạn biết lệnh nào nó chạy - từ git-bash chạy' git gui --trace'. Khi nó chạy lệnh chuẩn bị-commit-hook, nó sẽ phát ra lệnh mà nó chạy và bạn có thể xem lệnh đó để biết thêm thông tin gỡ rối. Có thể lấy gdb ở đó. Thực tế là nó phàn nàn về đống Cygwin là đáng ngờ. Hãy chắc chắn rằng bạn không có Cygwin được cài đặt hoặc ít nhất là nó không có trong PATH của bạn cả. Cygwin và msys không trộn lẫn. – patthoyts

+0

@patthoyts, fork0 Cảm ơn con trỏ, đã cập nhật Q với câu trả lời –

Trả lời

3

Sau khi khởi động lại Windows Update và hệ điều hành khác, sự cố đã biến mất.

Dường như một trong những bản cập nhật đã giới thiệu một lỗi đã được khắc phục trong một lỗi khác. Hoặc có thể là lỗi "giai đoạn của mặt trăng".

Tôi đoán chúng tôi sẽ không bao giờ biết ...

2

Tôi gặp sự cố tương tự này sau khi cài đặt 1.8.0 trên máy Win64. Tôi giải quyết vấn đề này bằng cách loại bỏ 1.8.0 và cài đặt 1.7.11

+0

Thật không may, OP không xác định phiên bản, vì vậy chúng tôi không thể so sánh báo cáo của anh ấy với trường hợp của bạn. –

9

Tôi đã có vấn đề này cũng

Tôi đã giải quyết nó với

http://support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull

Rõ ràng đây là do một số tính năng, và thay thế các dll sửa chữa nó cho hầu hết mọi người

trong trường hợp trang web là xuống -


ảo trỏ Alloc là null

Rất hiếm khi, chạy làm có thể dẫn đến một lỗi tương tự như sau:

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

Đây là vấn đề có ảnh hưởng đến một thiểu số nhỏ bé của khách hàng, và phụ thuộc vào những ứng dụng khác mà họ đang chạy cùng một lúc.

Điều này là do tính năng trong các tệp nhị phân MSYS mà chúng tôi sử dụng để cung cấp môi trường xây dựng cho sản phẩm.

Nếu điều này xảy ra, bạn có thể thay thế tệp \ msys \ bin \ msys-1.0.dll bằng tệp trong tệp zip đính kèm. msys-1.0.zip

Lưu ý rằng điều này không khắc phục được sự cố, thay vì nó di chuyển địa chỉ cơ sở DLL. Thật không may, nó có thể là lỗi có thể xảy ra với DLL thay thế này quá, một lần nữa tùy thuộc vào những gì các ứng dụng khác đang chạy.


+1

Làm việc như một sự quyến rũ! – sepehr

+1

Nó hoạt động! Cảm ơn người đàn ông! –

+0

có thể là một đầu mối cho vấn đề thực tế, đóng và mở lại cli khiến vấn đề này biến mất đối với tôi. Nó chỉ xảy ra sau khi làm việc một cách chính xác trong một thời gian dài. Trong trường hợp của tôi, tôi có hai điều khiển từ xa với số lượng cam kết khác nhau phía trước. Sẽ thay thế dll nếu nó xảy ra một lần nữa. Cảm ơn – isimmons

3

Tôi chạy vào trong này quá, và đó là vì MacType được can thiệp vào bash.exe và msys1.0.dll. (MacType là một chương trình làm mịn phông chữ cho Windows cố gắng mô phỏng quá trình tạo kiểu phông chữ OS-X.) Chỉ bật MacType trên các chương trình tôi cần và không phải trên cửa sổ Console2 đang cố tải bash.exe đã khắc phục sự cố.

Có thể điều đó sẽ giúp người khác khắc phục lỗi.

1

Chỉ cần thực hiện tìm kiếm cho tất cả msys-1.0.dll trên ổ đĩa C:\ của bạn và làm cho ổ đĩa được Git sử dụng đầu tiên.

Trong trường hợp của tôi, tôi chỉ đơn giản là thay đổi thứ tự của:

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 

Bằng cách làm cho con đường Git C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\ đến đầu tiên trong %PATH% của tôi, thông báo lỗi biến mất!

Không cần phải khởi động lại hoặc thậm chí thay đổi phiên DOS.
Sau khi %PATH% được cập nhật trong phiên DOS đó, lệnh git chỉ hoạt động.

10

Điều này phù hợp với tôi.

http://www.trinitycore.org/f/topic/5194-msysgit-couldnt-reserve-space-for-cygwins-heap/

Giải pháp:

Thay đổi địa chỉ cơ sở của msysgit.dll

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

+0

hoạt động với tôi, Windows 7 64bit, git 1.9.4 – jasonslyvia

+0

Tôi không biết ý kiến ​​của rebase phải làm gì với dll (cảm thấy như dll chính nó là dưới sự kiểm soát nguồn nếu nhu cầu rebasing) nhưng tôi không quan tâm.Nó hoạt động :) –

+0

Hoạt động cho máy khách GitHub bị hỏng trên Windows 10 –

3

tôi đã cùng một vấn đề. Các giải pháp mà làm việc đối với tôi là gần như tương tự như một trong những đề xuất bởi XandrGuard

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

Giải pháp được giải thích ở đây http://jakob.engbloms.se/archives/1403

Đối với tôi Giải pháp là hơi khác nhau. Đó là

C:\Program Files (x86)\Git\bin>rebase.exe -b 0x50000000 msys-1.0.dll 

Hy vọng nó giúp những người đang cố gắng để google vấn đề

+0

Giải pháp này làm việc tốt nhất cho tôi, vì nó trực tiếp trỏ tới ứng dụng Git GUI – JPeroutek

+0

Điều đó đã làm việc, mặc dù lần đầu tiên thất bại: 'ReBaseImage (msys-1.0.dll) không thành công với lỗi cuối cùng = 2' Chạy lại nó từ một dấu nhắc lệnh như quản trị viên đã làm các trick. – df778899

Các vấn đề liên quan