sysopen-доступ запрещены

Я пытаюсь исправить периодически возникающую ошибку в git-svn . Проблема возникает только в Windows XP, как с Cygwin git (perl v5.10.1), так и с msysGit (perl v5.8.8).

При выполнении любой операции, включающей выборку, я могу выполнить ее частично, а затем операция завершается с сообщением, аналогичным

Не удалось открыть .git / svn / refs / remotes / trunk / .rev_map.cc05479a-e8ea-436f-8d71-e07493b7796c.lock: Устройство или ресурс заняты

в / usr / lib / git-core / git-svn строка 5240

Однако точный файл блокировки и номер строки не всегда совпадают. Я отследил реальную проблему до строки 3679

sysopen(my $fh, $db_lock, O_RDWR | O_CREAT)

. Это создает новый файл .lock, и я попробовал эквивалент, но безрезультатно.

open(my $fh, ">", $db_lock)

Я проверил права доступа к каталогу, и это drwxr-xr-x , так что не должно быть никаких проблем, а если бы они были, они не были бы такими непоследовательными.

Может быть, это потому, что скрипт создает и переименовывает этот файл столько раз подряд, что XP не может справиться Это? РЕДАКТИРОВАТЬ: я подозреваю, что это так, потому что, когда я использовал отладчик perl и запускал выполнение каждого sysopen вручную, не было проблем для 100 выбранных мной ревизий.

РЕДАКТИРОВАТЬ : Некоторые разработчики Git Я бы предпочел выяснить первопричину, чем прибегнуть к сработавшему хакеру (я думаю, это правильный подход). Так, Может ли кто-нибудь помочь мне найти виновника, отказывающего мне в разрешении открывать эти файлы .lock? У меня есть ряд инструментов, которые теоретически можно было бы использовать для этой цели, но они не работают полностью:

  • Process Explorer - показывает все дескрипторы, принадлежащие процессу, а также может искать все процессы, владеющие данным ручка. Однако он не работает для короткоживущих процессов или дескрипторов (что и делает git svn clone / fetch)
  • Unlocker - обнаруживает, когда появляется общий диалог «доступ запрещен» и находит нарушающий дескриптор (ы) и предлагает разобраться с ними. Однако этого не происходит, когда программы, не являющиеся проводниками, сталкиваются с ошибками, связанными с файлами

Короче говоря, есть ли способ получить дополнительную информацию, не будучи сотрудником Microsoft?

РЕДАКТИРОВАТЬ 2 : Вероятно, это возможно не Symantec, но другая программа, которую мы запускаем на сетевых компьютерах. У меня есть несколько людей, которые занимаются этим, и они должны суметь хотя бы сузить здесь причину.

5
задан Nate Parsons 7 October 2010 в 15:21
поделиться