Програма запускається, але нічого не робить у Windows 7


2

Один з наших користувачів намагається запустити наш (з відкритим вихідним кодом) програмного забезпечення на його Windows 7 64-розрядної машині при його роботі.

На жаль, на його машині не запускається ні версія графічного інтерфейсу, ні версія командного рядка програми. Програма починає роботу, але нічого не робить, а графічна версія не відкриває вікна.

Я не думаю, що процес дійсно йде дуже далеко. Нижче наведено перегляди процесорів у потоці процесу на його та моїй машині:

На машині Windows 7:

Process' threads on Windows 7

На моєму комп'ютері з Windows 10:

Process' threads on Windows 10

Наше програмне забезпечення було побудовано за допомогою Visual Studio 2013 у 64-бітному режимі. Час виконання MSVC включено. Він працює протягом багатьох років, ймовірно, на різних машинах.

Що, можливо, відбувається?

Я радий додати потрібні деталі.

Оновлення 1: Я маю сліди Process Monitor (* .pml файли) для обох машин, але, хоча я знаю, як їх інтерпретувати, я не впевнений, які висновки я можу зробити з них. Хто зацікавлений у погляді? Я трохи вагаюся розмістити їх тут, як я підозрюю, що вони можуть містити конфіденційну інформацію.

Оновлення 2: Проблема відтворюється на всіх машинах Windows 7, до яких ми маємо доступ, але не на інших версіях Windows.

Оновлення 3: попереднього випуску Про програму повідомляється, що працює на Windows 7, в той час як останнього випуску ні. Ніщо не змінилося в тому, як ми будуємо або упаковуємо програму.


@Thomas Я отримав слід від Monitor Monitor від нашого користувача. Чи можна безпечно розміщувати його тут або потенційно містить конфіденційну інформацію?
François Beaune

Залежить від фільтрів. Це може виявити шляхи, IP-адреси і навіть ім'я користувача. Я б не опублікував тут повне захоплення
Thomas Weller

Якщо ви клацніть правою кнопкою миші на стовпці Результат у рядку, що містить УСПІХ, у контекстному меню виберіть "Виключити". Це має призвести лише до переліку потенційних проблем.
Thomas Weller

Пропущену проблему DLL може виявити debugging.wellisolutions.de/procmonanalizer (хоча зазвичай програма згортається, але, здається, ваша програма продовжує працювати.
Thomas Weller

Спасибі @ Томас. Це майже напевно не є проблемою відсутності DLL, оскільки Windows, як правило, скаржиться на неї (відсутній компонент і т.д.) і в будь-якому випадку ми розгортаємо це програмне забезпечення в дикій природі протягом багатьох років без проблем. Я б проголосував за якусь антивірусну проблему. Я можу дати вам слід, якщо ви хочете подивитися.
François Beaune

Відповіді:


1

Ось деякі відомості, коли я запускаю його у відладчику Microsoft WinDbg:

Break-in sent, waiting 30 seconds...
WARNING: Break-in timed out, suspending.
         This is usually caused by another thread holding the loader lock
(36a4.2fc8): Wake debugger - code 80000007 (first chance)

Подивитися StackOverflow, що таке замок навантажувача .

Це дійсно відбувається дуже рано під час запуску програми.

Я бачу на стеку викликів

0:000> k
 # Child-SP          RetAddr           Call Site
00 00000000`0020e9f8 00000000`771eaa78 ntdll!ZwWaitForKeyedEvent+0xa
01 00000000`0020ea00 00000000`771eabe2 ntdll!TppWaitpSet+0x1f1
02 00000000`0020eaa0 00000000`771ed0c4 ntdll!TppSetWaitInterrupt+0xa2
03 00000000`0020eb90 00000000`770bee49 ntdll!RtlRegisterWait+0x1e4
04 00000000`0020ec60 000007fe`d7252e98 kernel32!RegisterWaitForSingleObject+0x59
[...]
MSVCR120!Concurrency::critical_section::lock+0x2a [f:\dd\vctools\crt\crtw32\concrt\rtlocks.cpp @ 1031]
[...]
17 00000000`0020f790 00000000`00000000 ntdll!LdrInitializeThunk+0xe

Таким чином, це може бути (але не обов'язково) глухий кут: нитка раніше заблокувала критичний розділ і тепер чекає іншого. На x64 важко сказати, оскільки отримати аргументи не так просто. Інакше ми можемо пройти по ланцюжку очікування.


Не дивно, чому ви бачите "більше не підтримує оновлення". Це коли я даю палець на "depricated" помилки. Це так, ой так ти новачок в клубі і вирішив змінити компіляцію, і тепер світ депрессирован за вами ?!
ejbytes

1

Причиною цієї таємниці виявилося поєднання справжньої помилки у версії 1.61 Підвищення бібліотек C ++ та деякі деталі реалізації в Windows 7:

https://svn.boost.org/trac/boost/ticket/12475

Попередній випуск нашої програми (1.4.0-beta) використовує Boost 1.55 і на нього не впливає помилка. Остання версія використовує Boost 1.61 з помилкою.


1
Вау, спасибі, що знайшла його. Ми мали подібну проблему, і я б ніколи не знайшов її без цього натяку!
PhilLab
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.