アプリケーション実行時に「DLLの初期化に失敗」や「システムエラー1114」が出力されることがあります。

アプリケーション実行時に次のような現象が発生することがあります。 「~.DLLの初期化に失敗しました。」というメッセージボックスが出力される。 プログラムの呼び出しに失敗し、「システムエラー 1114」が通知される。 ODBC機能を使用している場合に「システムエラー 1114」を示すSQLMSGが通知される。
現象が発生したシステムによって、対処方法が異なります。

現象が発生したシステムが、Windows Server 2003以降の場合
以下のFAQを参照してください。
現象が発生したシステムが、Windows NT 4.0、Windows 2000、Windows XPの場合
Windowsシステムには、TLS(スレッドローカルストレージ)という資源があり、1プロセス内で確保できる最大数(エントリー数)にOSの定量制限があります。TLSのエントリーを上限まで使いきると、さまざまな現象が発生します。

最も多い現象は、DLLがプロセス空間にロードされるタイミングにおいて、DLLの初期化に失敗してしまうというものです。
これは、プロセス内でTLSエントリーをほぼ上限まで使い切っている状態で、さらに、DLLの初期化処理でTLSエントリーの確保を行おうとして失敗した場合に発生します。
特に1プロセスが多数のDLLで構成されていて、一つのDLLが一つのTLSエントリーを消費する構造になっている場合、DLL数分のTLSエントリーが消費されるため簡単に定量制限を超えてしまいますので、注意が必要です。

参考
各システムのTLSエントリー数の上限は以下のとおりです。
システム名 TLSエントリー数の上限
Windows NT 4.0 SP6a 64
Windows 2000、Windows XP 1088

このようにWindows NT 4.0では上限に達する可能性が高いため、場合によっては、TLSエントリー数が多いシステムへの移行を検討する必要があります。
製品・サービス情報
対象製品NetCOBOL
プラットフォームWindows x86
アンサー種別 運用/保守
このページの先頭へ