2

VxWorks の RTP アプリケーションに SQLite ライブラリを統合しようとしています。私はSQLiteを構築し、それに対して静的にリンクしました。他のシステムでうまく機能する簡単なテストを実行します。テストは本当に原始的なものです: sqlite_open()、sqlite_exec()、sqlite_close()。パラメータが正しい (他のシステムで動作する)。

SIGSEGV (シグナル コード 11) が発生します。「printf()s」でクラッシュのポイントまでトレースし、pthread_mutex_lock() 呼び出しの後にクラッシュすることを発見しました。興味深いのは、関数呼び出しから戻ってクラッシュすることです。スタックサイズを確認しました(実際のクラッシュの前に taskDelay() があります)。スタックは十分に大きく、限界には程遠いです。

SQLITE_HOMEGROWN_RECURSIVE_MUTEX を使用して、または使用せずにSQliteをビルドしようとしています。そして、私は常に SQLITE_THREADSAFE 1でビルドします。

誰かがそのようなことを経験し、それを修正することができた場合は、私に知らせてください.

ここにいくつかの詳細があります。

  • VxWorks バージョン: 6.8
  • SQLite ソース: 3.7.16.1
  • 開発環境:ウインドリーバー
  • CPU アーキテクチャ: PowerPC

前もって感謝します

4

1 に答える 1

1

私はそれを見つけた。VxWorks OS に pthread がありませんでした。今では動作します。

奇妙なことは、pthreads ライブラリに対してアプリケーションを構築する際にそれを確認する方法がないことです。

これを行う簡単な方法はありませんが、SIGSEGV よりも少なくともある種の「スタブ」機能が必要です。それとも、そのようなお金を求めすぎているのでしょうか?

于 2013-04-25T14:37:14.453 に答える