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:
Di mesin Windows 10 saya:
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.
Jawaban:
Ini beberapa output ketika saya menjalankannya di Microsoft WinDbg debugger:
Lihat StackOverflow apa kunci loader .
Ini benar-benar terjadi sangat awal dalam prosedur startup program.
Saya melihat di callstack
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.
sumber
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.
sumber