詳しく教えていただけると助かります。アプリケーションを実行していたプラットフォームは? 使用している ACE ライブラリのバージョンは何ですか? 1 ~ 1024 の範囲の UDP ポートでしたか? ブロードキャスト UDP ソケットを使用していますか?
GetLastError() ではなく "errno" をチェックしているため、Linux などの UNIX フレーバーで実行していると仮定しましょう。OS_S_errno.inl を見ると、異なる OS 間の動作の違いを説明するコメントが見つかります。
最初にUDPソケットのEADDRINUSEを取得する理由を尋ねていません。SO_REUSEADDR オプションを使用していますか? その場合、ソケットにバインドされた最後のプロセスのみが通知され、OS によって動作が異なる可能性があることに注意してください。
bind() の後に別のシステム関数呼び出しが発行される可能性はありますか? その場合、bind() によって返されたエラーは、後続のシステム コールによってリセットされる場合があります。last_error() の実装からわかるように、Windows では "errno = ::GetLastError()" を設定するだけで、UNIX では errno をそのまま返します。