Ошибка фиксации хука

Однако я пытаюсь реализовать некоторые ловушки, как до, так и после сбоя. Я получаю одно и то же сообщение об ошибке для обоих, когда пытаюсь зафиксировать:

'*-commit' hook failed (did not exit cleanly: apr_exit_why_e was 2, exitcode was
-1073741515).   with no output.

Exitcode -1073741515 выглядит странным, и небольшой гугл-фу дал мне вот это:

Код ошибки, который рассматривается как шестнадцатеричный DWORD, - 0xC0000135.

То есть Sev = 11, C = 0, R = 0, Facility = 0, Code = 0x0135.

Значение 0xC0000135 можно найти в NtStatus.h со следующим определением

//
// MessageId: STATUS_DLL_NOT_FOUND
//
// MessageText:
//
//  {Unable To Locate Component}
//  This application has failed to start because %hs was not found.
// Re-installing the application may fix this problem.
//
#define STATUS_DLL_NOT_FOUND             ((NTSTATUS)0xC0000135L)

Хорошо, dll не найдена, это не должно быть слишком сложно, правда? У меня есть виртуальная машина с svn, которая спокойно работает с этими хуками. Поэтому я запускаю Filemon.exe и Depends.exe на обеих машинах.

Я все еще просматриваю журналы filemon для обоих серверов, и это не дает мне каких-либо уникальных проблем с каким-либо исполняемым файлом, которые, как я могу думать, могут быть затронуты с помощью фиксации Hook.

Я решил заглянуть в журналы событий, и О, Боже!

Ошибка 'pre-commit' (завершилась некорректно: apr_exit_why_e было 2, код выхода был -1073741515). без вывода. [409, # 165001]

Дополнительная информация, этот [409, # 165001] повсюду в Google, но я не нашел ничего полезного.

Хук явно вызывает исполняемый файл с тремя параметрами.

C: \ SubversionNotify \ SubversionNotify.exe% 1% 2 -pre

Я даже пробовал использовать переменные.

SET REPOS=%1
SET REV=%2
C:\SubversionNotify\SubversionNotify.exe %REPOS% %REV% -pre

Просмотр журналов filemon показывает мне, что он никогда не попадает в SubversionNotify.exe

Дело доходит до того, что я не могу тратить больше времени на попытки реализовать это, помоги мне ТАК, ты моя единственная надежда.

Характеристики сервера:

Windows XP, последняя версия VisualSVN Server.

Изменить: похоже, что SubversionNotify выдает исключение обратно в Depends.exe, чтобы проверить, какая DLL не работает.

Ошибка выглядит следующим образом:

Не удалось правильно инициализировать приложение (0xc0000135).

Тот 0xC0000135 был замечен ранее, охота за dll!


person Slipfish    schedule 20.11.2008    source источник


Ответы (3)


Обычно проблема с обработчиками фиксации заключается в том, что АБСОЛЮТНО нет среды (а значит, нет пути), поэтому все ссылки должны быть до боли явными. Обычно я создаю небольшой командный файл, который меняет каталог на правильный каталог и выполняет команду.

Редактировать:

ПОПРОБУЙТЕ ИЗМЕНИТЬ КАТАЛОГ НА C: \ SubversionNotify

Возможно, вам не хватает какой-то библиотеки времени выполнения, которая требуется для запуска программы. Помните: нет пути. Вы можете смоделировать это, установив путь к НИЧЕМУ в окне командной строки. установите PATH =.

Убедитесь, что простые команды, такие как блокнот, не работают. У тебя exe тогда работает? Выясните, где находятся отсутствующие библиотеки DLL, и создайте путь в начале командного файла.

person krosenvold    schedule 20.11.2008
comment
Хук явно вызывает исполняемый файл с тремя параметрами. C: \ SubversionNotify \ SubversionNotify.exe% 1% 2 -pre Вопрос был отредактирован, чтобы отразить это. - person Slipfish; 20.11.2008
comment
Смена каталога на C :: \ SubversionNotify сообщает мне: 'Фиксация заблокирована обработчиком предварительной фиксации (код выхода 1) с выводом: имя файла, имя каталога или синтаксис метки тома неверны - person Slipfish; 20.11.2008
comment
SubversionNotify на самом деле выдает исключение, отсутствует какая-то dll, просто нужно выяснить, какая именно. К счастью, у меня есть виртуальная машина, которая работает с SubversionNotify. Сравните и сопоставьте время. Спасибо за помощь! - person Slipfish; 20.11.2008

Я думал, что поделюсь Решением здесь, потому что я здорово посмеялся над этим.

SubversionNotify был написан на .NET.
На сервере не была установлена ​​.NET Framework.
На виртуальной машине была установлена.

Теперь я ношу кепку.

person Slipfish    schedule 20.11.2008

Спасибо, что разместили свой ответ. Если бы вы этого не сделали, я бы потратил гораздо больше времени, пытаясь справиться с этим и чувствуя себя еще более глупым, чем сейчас. Просто взорвал коробку, установил VisualSVN и SubversionNotify и не мог понять, почему это не работает.

person Community    schedule 06.10.2009