Belum lama ini saya menemukan pesan ContextSwitchDeadlock pada aplikasi yang saya buat dan saya sendiri tidak tahu apa yang menjadi penyebabnya. Setelah mencoba mencari tahu di web, ternyata hal tersebut disebabkan oleh MDA (Managed Debugging Assistants). Sederhananya MDA itu semacam asisten yang membantu dalam hal mendiagnosis error, yang bekerja dengan CLR dotNET. MDA akan bekerja jika suatu keadaan atau kondisi tertentu terpenuhi, dan biasanya keadaan tersebut dicurigai berpotensi menyebabkan error pada aplikasi tersebut.
ContextSwitchDeadlock merupakan salah satu MDA dari sekian banyak MDA yang ada pada dotNET framework. Saya mendapatkan ContextSwitchDeadlock ini ketika menjalankan aplikasi konversi file text ke database yang jumlah recordnya kurang lebih 40 ribuan. Dari pesan yang ditampilkan oleh dotNET, ternyata CLR tidak dapat melakukan perpindahan context selama lebih dari 60 detik. Dari situ MDA mencurigai bahwa telah terjadi suatu deadlock pada thread sehingga berpotensi menyebabkan over time atau not responding.
Memang untuk menjalankan aplikasi konversi yang jumlah record-nya 40-50 ribu record membutuhkan waktu beberapa jam, karena itu sama MDA dianggap telah terjadi deadlock pada aplikasi tersebut. Nah, solusi yang saya dapatkan adalah dengan me non-aktifkan ContextSwitchDeadlock MDA dengan cara dari menu Debug -> Exceptions -> Managed Debug Assistants un-check item ContextSwitchDeadlock, dengan itu MDA ngga akan usil lagi dengan seenaknya menghentikan aplikasi yang sedang dijalankan. ^ ^
If you liked my post, feel free to subscribe to my rss feeds
























BlogoSquare
2 Comments so far (Add 1 more)