Tôi đang cố gắng khắc phục lỗi liên tục trong git-svn. Vấn đề chỉ xảy ra trong Windows XP, với cả Cygwin git (perl v5.10.1) và msysGit (perl v5.8.8).quyền sysopen bị từ chối
Với bất kỳ hoạt động có liên quan đến một lấy, tôi có thể nhận được partway qua và sau đó hoạt động chết với một thông điệp tương tự như
Không thể mở .git/svn/refs/điều khiển từ xa/trunk /.rev_map.cc05479a-e8ea-436f-8d71-e07493b7796c.lock: thiết bị hoặc tài nguyên bận rộn
tại/usr/lib/git-core/git-svn dòng 5240
Tuy nhiên, khóa chính xác tệp và số dòng không phải lúc nào cũng giống nhau. Tôi đã theo dõi sự cố thực tế đối với dòng 3679
sysopen(my $fh, $db_lock, O_RDWR | O_CREAT)
Đây là tệp tạo tệp .lock mới và tôi đã thử tương đương không có kết quả.
open(my $fh, ">", $db_lock)
Tôi đã kiểm tra quyền của thư mục và đó là drwxr-xr-x, vì vậy sẽ không có bất kỳ vấn đề nào hoặc nếu không, chúng sẽ không nhất quán.
Điều này có thể là do tập lệnh tạo và đổi tên tệp này quá nhiều lần liên tiếp mà XP không thể xử lý? EDIT: nghi ngờ của tôi là đây là trường hợp, bởi vì khi tôi sử dụng trình gỡ rối perl và khởi động việc thực hiện của mỗi sysopen bằng tay, không có vấn đề cho 100 sửa đổi tôi lấy.
EDIT: Một số nhà phát triển Git sẽ tìm hiểu nguyên nhân gốc rễ hơn là đi với một hack xảy ra để làm việc (cách tiếp cận đúng, tôi nghĩ). Vì vậy, bất cứ ai có thể giúp tôi tìm thấy thủ phạm phủ nhận sự cho phép của tôi để mở các tập tin .lock? Tôi có một số công cụ mà về mặt lý thuyết có thể được sử dụng cho mục đích này, nhưng họ hoàn toàn không đi tất cả các cách:
- Process Explorer - cho thấy tất cả xử lý thuộc sở hữu của một quá trình, và cũng có thể tìm kiếm tất cả các quá trình sở hữu một tay cầm cụ thể. Tuy nhiên, nó không hoạt động tốt cho các quá trình hoặc xử lý ngắn (đó là những gì git svn clone/fetch do)
- Trình mở khóa - Phát hiện khi hộp thoại 'cho phép từ chối chung' xuất hiện và tìm (các) trình xử lý và phiếu mua hàng vi phạm để đối phó với họ. Tuy nhiên, nó không xuất hiện khi các chương trình không phải thám hiểm gặp lỗi dựa trên tệp
Tóm lại, có cách nào để tôi có thêm thông tin mà không phải là nhân viên của Microsoft không?
CHỈNH SỬA 2: Có thể không phải Symantec, mà là một chương trình khác mà chúng tôi đã chạy trên các máy tính nối mạng. Tôi có một số người nhìn vào nó, và họ sẽ có thể ít nhất là thu hẹp nguyên nhân ở đây.
Điều đó nghe có vẻ hợp lý. – Axeman
Vì vậy, nó sẽ là một sửa chữa tốt để thêm một vòng lặp để thử lại đến một số lần nhất định, hoặc là quá nhiều của một hack? –
Sẽ không tương đương với 'O_RDWR | O_CREAT' là 'mở (my $ fh," + <", $ db_lock)'? – mob