Program dimulai tetapi tidak melakukan apa pun pada Windows 7


2

Salah satu pengguna kami mencoba menjalankan perangkat lunak (sumber terbuka) kami di mesin Windows 7 64-bit di tempat kerjanya.

Sayangnya, baik versi GUI maupun versi baris perintah dari program tidak berjalan di mesinnya. Program tampaknya mulai tetapi tidak melakukan apa-apa, dan versi GUI bahkan tidak membuka jendela.

Saya tidak berpikir prosesnya berjalan sangat jauh. Berikut adalah tampilan Process Explorer dari utas proses pada komputer saya dan saya:

Di mesin Windows 7-nya:

Memproses utas pada Windows 7

Di mesin Windows 10 saya:

Memproses utas pada Windows 10

Perangkat lunak kami dibangun dengan Visual Studio 2013 dalam mode 64-bit. Runtime MSVC disertakan. Sudah bekerja bertahun-tahun, mungkin pada berbagai mesin.

Apa yang mungkin terjadi?

Saya senang menambahkan detail yang diperlukan.

Pembaruan 1: Saya memiliki jejak Monitor Proses (* .pml file) untuk kedua mesin, tetapi sementara saya tahu bagaimana menafsirkannya, saya tidak yakin kesimpulan apa yang bisa saya ambil dari mereka. Adakah yang tertarik untuk melihatnya? Saya agak ragu untuk mempostingnya di sini karena saya curiga mereka bisa memuat informasi sensitif.

Pembaruan 2: Masalahnya dapat direproduksi pada semua mesin Windows 7 yang kami miliki aksesnya, tetapi tidak pada versi Windows lainnya.

Pembaruan 3: Rilis aplikasi sebelumnya dilaporkan berfungsi dengan baik pada Windows 7, sementara rilis terbaru tidak. Tidak ada yang berubah dalam cara kami membangun atau mengemas aplikasi.


@ Thomas Saya mendapat jejak Monitor Proses dari pengguna kami. Apakah aman mempostingnya di sini, atau berpotensi berisi informasi sensitif?
François Beaune

Tergantung filternya. Ini dapat mengekspos jalur, alamat IP dan bahkan nama pengguna. Saya tidak akan memposting tangkapan penuh di sini
Thomas Weller

Jika Anda mengklik kanan pada kolom Hasil pada baris yang berisi SUKSES, pilih "Kecualikan" dari menu konteks. Ini harus menghasilkan daftar masalah potensial saja.
Thomas Weller

Masalah DLL yang hilang mungkin terdeteksi oleh debugging.wellisolutions.de/procmonanalyzer (meskipun biasanya program akan macet sementara Anda tampaknya terus berjalan.
Thomas Weller

Terima kasih @ Thomas. Ini hampir pasti bukan masalah DLL yang hilang karena Windows biasanya akan mengeluh tentang hal itu (komponen hilang dll) dan lagi pula kami telah menyebarkan perangkat lunak ini di alam liar selama bertahun-tahun tanpa masalah. Saya akan memilih beberapa jenis masalah antivirus. Saya bisa memberi Anda jejak jika Anda ingin melihatnya.
François Beaune

Jawaban:


1

Ini beberapa output ketika saya menjalankannya di Microsoft WinDbg debugger:

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)

Lihat StackOverflow apa kunci loader .

Ini benar-benar terjadi sangat awal dalam prosedur startup program.

Saya melihat di callstack

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

Jadi ini bisa menjadi (tetapi tidak harus menjadi) jalan buntu: utas telah mengunci bagian penting sebelumnya dan sekarang sedang menunggu sesuatu yang lain. Sulit mengatakannya di x64 karena mendapatkan argumen tidaklah mudah. Kalau tidak, kita bisa melintasi rantai menunggu.


Tidak heran mengapa Anda melihat "tidak lagi mendukung peningkatan". Justru ketika saya memberikan jari untuk kesalahan "depricated". Ini seperti, oh jadi Anda baru ke klub dan memutuskan untuk mengubah kompilasi dan sekarang dunia dirusak menurut Anda ?!
ejbytes

1

Penyebab misteri ini ternyata adalah kombinasi dari bug asli di versi 1.61 dari Boost C ++ Libraries dan beberapa detail implementasi di Windows 7:

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

Rilis aplikasi kami sebelumnya (1.4.0-beta) menggunakan Boost 1.55 dan tidak terpengaruh oleh bug. Rilis terbaru menggunakan Boost 1.61 yang memiliki bug.


1
Wow, terima kasih sudah menemukannya. Kami memiliki masalah serupa dan saya tidak akan pernah menemukannya tanpa petunjuk ini!
PhilLab
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.