0

これは、「libtorrent::session ses」変数を初期化する方法です:

ses( fingerprint( "UT", LIBTORRENT_VERSION_MAJOR, 8, 7, 0 )
                   , std::make_pair( 49152, 65534 )
                   , "0.0.0.0"
                   , session::add_default_plugins
                   , alert::progress_notification

                  )

ただし、セッション コンストラクターで次の行を実行すると、EXC_BAD_ACCESS code=1 が返されます。

init(listen_port_range, listen_interface, print, alert_mask);

参照用の init メソッドの完全なソースは次のとおりです。エラーが発生している行は、次のスニペットで見つけることができます。

            session(fingerprint const& print
            , std::pair<int, int> listen_port_range
            , char const* listen_interface = "0.0.0.0"
            , int flags = start_default_features | add_default_plugins
            , int alert_mask = alert::error_notification
            TORRENT_LOGPATH_ARG_DEFAULT)
        {
            TORRENT_CFG();
            TORRENT_ASSERT(listen_port_range.first > 0);
            TORRENT_ASSERT(listen_port_range.first < listen_port_range.second);
            init(listen_port_range, listen_interface, print, alert_mask);
   #if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_LOGGING || defined TORRENT_ERROR_LOGGING
            set_log_path(logpath);
#endif
            start(flags);
        }

犯人はゾンビ、つまり解放された変数である可能性があると読みましたが、初期化中に渡した変数のどれが解放された可能性があるのか​​ わかりません。それらはすべて問題ないようです私に。

問題は、libtorrent::session 変数の初期化中に EXC_BAD_ACCESS エラーが発生するのはなぜですか?

ヒントや提案をいただければ幸いです。

4

1 に答える 1

0

ABI の互換性の問題がないことを確認してください。libtorrent には、ABI に影響する多くのビルド オプションがあります。

libtorrent を共有ライブラリとして構築している場合は、libtorrent の構築に使用されるすべての TORRENT_* 定義が、libtorrent ヘッダーを含むプログラムにも提供されていることを確認してください。

この問題は、libtorrent 1.0.x で大幅に軽減されました。そのバージョンでは、これらの定義のみが ABI に影響します。

  • TORRENT_USE_IPV6
  • TORRENT_NO_DEPRECATE

以前のバージョンでは、これらの定義も ABI に影響します。

  • TORRENT_DEBUG
  • TORRENT_DISABLE_DHT
  • TORRENT_VERBOSE_LOGGING
  • TORRENT_LOGGING
  • TORRENT_DISABLE_RESOLVE_COUNTRIES
  • TORRENT_DISABLE_FULL_STATS
  • TORRENT_DISABLE_EXTENSIONS
  • _ユニコード
  • TORRENT_DISABLE_POOL_ALLOCATORS

ただし、abi の問題は、名前にすべての構成オプションが含まれる不足しているシンボルによって検出されるはずです。(詳細については、build_config.hpp を参照してください)。

于 2015-04-03T15:47:55.043 に答える