Udostępnij za pośrednictwem


Прелести отладки.

??????? ???????, ????????? ? ???? ??????, ?????????? ??????? ?????????? ???????, ????????? ??????? ? ??????? ? ???????. ????????? ???????? ???????? ?????? «???????» ? ????????? ??? ?????? ?????? ???????? ?????????? ? ?????. ????? ??????????? ? ?????????? ???????: «? ??? ?? ??? ??? ??? ?????????, ?????? ????????? ????????, ? ????? KD ????????», ????? ?? ???? ??? ???????. ?????? ?????, ??????? ?????? «???-?? ? ??? ??? ?????» ? ????????? «? ??? ?????? ?? ??????? ?? ?? ??????» ?????? ???????? – ??? ??????. ?????? ?? ????? ?? ??? ?????????? ????? 0.42%. ???????, ? ????? ??????? ?????????? ???? ??????? ?????, - ? ??? ??? 9%. ?? ???????? «??????! ?????!» ??????????? ?????? ?? ????????. :-(

????????? ??? ??? ??? ?? ?????? ???? ???? ????????. ???? ?? ?????????? ?????? ?????? ? ????? ????? ? ?????????? ????????? ???????? ? ???????????? ?????, ???????? ?????????? ????????? ?? ????? ????? ??????. ????? ????? ???????? ??????????, ?????????? ??? ??? ??? ??? ?? ?????????????? ????????, ? ??? ????? ???????? ?? ????? ?????????????. ??????????? ??? ?? ???, ??? ?? ?????, ??? ????? ????????, ??? ??? ????? ???????? ? OS ?????? ??????????? ????????? ??????????.

??, ??????, ?????? OS ?? ???????? ??????, ???????????? ??????????, ???????? – ????????. ??. ?????? ? ??? ? ???? – ????????. ??????? repro steps. ???????????, ????? ????????? ? ??????? ?????? ?? ??????? ?????. ????????????. ???????? ????? ?????. ????????. ????????? ??????? ?? ??????? ????????? ? ??????? System Restore, ????? ?????? ??????????, ???????? – ??????. ???. ???????? ?????? ??? – ????????. ???????, ??????, ????????, ?????-?????? ????????????? ???? ? ??????? ????????? ??? ?????? ???????. ??? ???????? ???????? ? ?????? ???. ??????. ????????????.

?????, ?????? ??????? ???????. ????????? exception chain ? ??? ??????? ??????? ?????????? ?????????? ???????? ?????????? ?? ????????????? ??????. Exception record ???????? ??????? ??????, ?? ???? «?????» ?????? ?????????? ? ????? RaiseException. ??? ??? ???? ???? ???????? ? ????? ??????????, ???? ??? ?? «?????». ???????? ?????????? ???????. ??? ????????? ????? ????? ?? ?????????? ? ???????????? ???????????. ??????????, ??? ??? C++ ?????????? ??? ??????????? ?????????? ??? SEH. ????? ???????, ??? ? ??????? ?????? RaiseException ? «?????????» ?????? exception chain ??? ????????.

?????? ????? ? ?????? ??????? – ????? ??? ????????? ? ??????? ? ????? ???????. ? ? «???????» ? ? «?????????» ???? ???? ?????????????? ACCESS DENIED. ????????, ??????, ??? ????? ???????? ????????????? ACCESS DENIED ? «???????» ?????? ????????? ?? ??????? ? ???????.

?????? N ???????????? ??????????, ??? ????????? ?? RaiseException ?????????? RegisterTypeLib, ???????, ??? ??????????, ?????????? ?????? ????????? ??? «????????» ? «??????????» ???????. ???? ?? ???-?? ????. ?? ???? ???? ??????????, ??? ? «???????» ?????? RaiseException ??????? ??????? ??????, ? ?????? ????????? ????? ???????? ? ???????. ? ?????? – ???, ??? ??????? ????? RegisterTypeLib, ?????????????? ?????????. ????? ??????????, ??? ? ????????? «????????» ???????? RegisterTypeLib ?????????? ????? ????? ?? ??????, ??? ? ? «???????». ?????? ?? ???.

? ????? ??????, ????????? ?? ????? RegCreateKeyEx, ??????? ?????????? ?????? ?????????, ?? ?????? ?? ?????????? ????????? ?????? ? ????? ???????. ??????????, ??? ? «?????????» ???????? ???? RegCreateKeyEx ?????? ??????? ???????? ????????? ????. ? ?????????? ????????? ?????????? ?????????? ? ? ????? ?????? ?????? ????? ?????? RaiseException. ? «???????» ?? ???????? ACCESS DENIED, ???????????? ?? RegCreateKeyEx, ???????? ? ????, ??? RaiseException ?????? ??? ?? ?????????. Exception chain ?? ??? ? ????? ??????? ????????? ????????? ? ??????? ?????? RegCreateKeyEx. ??? ???? ?????????? ??????? – ??????????? ??? ????, ? ??? ???????.

?? ? ??? ??? ?? ???. ?????? ??????????, ??? ??????? ????? – ??, ??????? ?? ??? ?????? ???? ????? ?????????, ????? ???? ????? ????? ??? ? ????. ?????????????? ??? ?? ???? ????????? ???????? ???????? ?????? ????????? ? ??? ??? ??????? ? ?????-?? ???? ?? ?????…

Cross-posted from blog.not-a-kernel-guy.com.

Comments

  • Anonymous
    January 16, 2009
    Особой прелести и остроты момента добавляет факт выявления критического дефекта в день релиза. У меня с реестром было примерно так, моё приложение использует MS SQL Compact, при установке оно проверяет установлен ли он в системе, если нет пытается его установить, если MS SQL Compact ставится нормально то установка продолжается, если нет аварийно завершаем работу установщика. Случилось так что инсталятор MS SQL Compact отрабатывает успешно, но сам MS SQL Compact не устанавливается, причём повторялось только на одной машине. Причина была в том что инсталятор доставлял еще один компонент, этот компонент пытается проверить версию msxml при установке, а ключ из которого происходит считывание не имеет прав доступа для SYSTEM, в результате компонент не установлен, MS SQL Compact не установлен, но установщик возвращает что операция произошла успешно. В резульате 2 часа в копаниях логов исталятора, Process Monitora и куча тестов на различных конфигурациях.