Трудовые будни

Жалуется юзер, странной жалобой: 64-битный FRV падает, 32-битный - работает. Система, естественно, 64 бита.

Через три дампа (научили его снимать через Task Manager) и три версии софта проблема выяснилась:

  • FRV для отрисовки дерева фолдеров использует Qt-шный компонент (QDirModel)
  • Тот, в свою очередь, за иконками ходит в систему, все кончается в SHGetFileInfo()
  • В системе, как мы знаем можно зарегистрировать своего провайдера иконок и рисовать красивые иконки (так делает, к примеру Dropbox: для синхронизированных каталогов-файлов одна иконка, для тех что в процессе - вторая).
  • Ну и у юзера оно так и есть, там DBROverlayIconBackuped.dll, который часть Делловского (ноутбучного?) бэкапа.
  • Ну и 32-битная версия этого добра - дает угля иконок, а 64-битное к ней обращение (уж не знаю битность самого DLL, может где-то по дороге транслируется) - все рушит. Собственно и дампы кончаются в этом DLL, но я только со второго дампа начал подозревать чужую ошибку, а не свою.

Это, граждане, ужас. Везде БЕЗДНЫ.

Comments

Интересно, значит ли это, что у него любая 64-битная программа, рисующая fs-ные иконки, должна падать?

Я бы аккуратнее выразился: да, любая программа которая делает SHGetFileInfo с такими (же) флагами - скорее всего упадет. Должна.

Да. Хватает.

Бездн и днищ...

Сама M$ советует использовать под Вин-64 офис-32! - меньше глюков.

Все глюки там связаны исключительно с написанными пользователями или сторонними разработчиками макросами да addin-ами. Ванильный пользователь ничего не заметит. Хотя ему, как правило, и не надо работать с такими файлами, которые 64-бита требуют.

С FRV это не выход.
- 2Gb (ну ладно, 3) адресного пространства - маловато. Оно кое-как живет, но скажем с 50Mpix файлами с кэнон уже может перестать влезать даже при стандартных настройках (которые дл 32 бит утоптаны, кэш - меньше)
- 64-битный код просто тупо быстрее и сильно.