最近お仕事で開発している SignalR 製の Web アプリケーションが本日... を遂げるという怪奇事件が起こりました。常時接続なので落ちないように結構気を配っていたので、かなり思わぬ事態でした。何事かとイベントビューアーでログを見ていると、ODP.NET を使ったデータベースアクセスで AccessViolationException が発生して捕捉できずに死んでいる模様。ちゃんと try/catch しているのに一体どういうことだ...。 例外捕捉の挙動変更 MSDN のドキュメントによると、AccessViolationException は主にマネージド領域外のメモリに対するアクセス違反が発生した際にスローされるようです。以下はその抜粋。 割り当てられていないメモリ、またはコードがアクセス権を持たないメモリに対して、コードが読み取りまたは書き込みを試行すると、アンマネージコード
![AccessViolationExceptionを捕捉できるようにする - xin9le.net](https://cdn-ak-scissors.b.st-hatena.com/image/square/6d402835a51fc435c280d3fbcf15b1cf24ad8c55/height=288;version=1;width=512/http%3A%2F%2Fb.eax.jp%2Fwp-content%2FupLoads%2FIMG_0296-450x450.png)