アプリケーション実行時に「DLLの初期化に失敗」や「システムエラー1114」が出力されることがあります。
NetCOBOLのよくあるご質問を検索できます。
- アプリケーション実行時に次のような現象が発生することがあります。 「~.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エントリー数が多いシステムへの移行を検討する必要があります。
製品・サービス情報 |
|
||||
---|---|---|---|---|---|
アンサー種別 | 運用/保守 |