Сбой вокруг pthreads при интеграции SQLite в RTP-приложение на VxWorks
Я пытаюсь интегрировать библиотеку SQLite в RTP-приложение на VxWorks. Я построил SQlite и статически ссылаюсь на него. Я запускаю простой тест, который хорошо работает на других системах. Тест очень примитивный: sqlite_open(), sqlite_exec(), sqlite_close(). Параметры верны (работает на других системах).
Я испытываю SIGSEGV (код сигнала 11). Я проследил до момента сбоя с помощью "printf()s" и обнаружил, что он падает после вызова pthread_mutex_lock(). Что интересно - он возвращается из вызова функции, а затем вылетает. Я проверил размер стека (с taskDelay() до фактического сбоя). Стек достаточно большой и далеко от своего предела.
Я пытаюсь построить SQlite с SQLITE_HOMEGROWN_RECURSIVE_MUTEX и без. И я все время строю с SQLITE_THREADSAFE 1.
Если кто-то испытал что-то подобное и смог это исправить - пожалуйста, дайте мне знать.
Вот несколько деталей, просто чтобы обрисовать их в общих чертах.
- Версия VxWorks: 6,8
- Источники SQlite: 3.7.16.1
- Среда разработки: Windriever
- Архитектура процессора: PowerPC
заранее спасибо
1 ответ
Я нашел это. У меня не было pthreads в моей ОС VxWorks. Теперь это работает.
Странно то, что нет способа проверить это при создании приложения для библиотеки pthreads.
Нет простого способа сделать это, но есть, по крайней мере, какая-то функция-заглушка, чем SIGSEGV. Или я слишком много спрашиваю за такие деньги?