fseek, ftell, приводящий к ошибке сегментации

Я пытаюсь найти файл до конца, используя fseek, с шагом 2560 * 5 байт. Понятия не имею, почему я получаю ошибку сегментации
Я использую этот код на плате TDA2x. Есть ли проблема в конкретной среде, о которой я не знаю?

Начальное значение uNumFrames составляет 1000
Этот код в основном пытается прочитать данные с внешнего SSD-накопителя и читает файл побайтно, пропуская определенные контейнеры в файле с помощью fseek. Проблема, с которой я сталкиваюсь, заключается в том, что при попытке прочитать файлы, подобные этим, происходит сбой кода со следующими деталями

while(uNumFrames > 500)
{
logger::addLog(logger::LOGGER_INFO,"Inside while loop, uNumFrames = %d", uNumFrames);
/*Skip packet Header*/
ui_skip_count = fseek(fp, HeaderSize * 5, SEEK_CUR);
fsize = ftell(fp);
logger::addLog(logger::LOGGER_INFO,"fsize = %ld\n", fsize);

if (ferror(fp))
{
logger::addLog(logger::LOGGER_INFO,"fseek Error");
fclose (fp);
break;
}

if(0 != ui_skip_count)
{
logger::addLog(logger::LOGGER_INFO,"fseek for fp failed");
}
else
{
logger::addLog(logger::LOGGER_INFO,"Inside else for read and scale");
}
uNumFrames--;
}

Пример вывода выглядит примерно так:

[HOST  ] [INFO]    86.234680 s: Inside while loop, uNumFrames = 978
[HOST  ] [INFO]    86.234680 s: fsize = 3368961
[HOST  ] [INFO]    86.234710 s: Inside else for read and scale
[HOST  ] [INFO]    86.234710 s: Inside while loop, uNumFrames = 977
[HOST  ] [INFO]    86.234710 s: fsize = 3381761
[HOST  ] [INFO]    86.234710 s: Inside else for read and scale
[HOST  ] [INFO]    86.234710 s: Inside while loop, uNumFrames = 976
[HOST  ] [INFO]    86.234741 s: fsize = 3394561
[HOST  ] [INFO]    86.234741 s: Inside else for read and scale
[HOST  ] [INFO]    86.234741 s: Inside while loop, uNumFrames = 975
[HOST  ] [INFO]    86.234741 s: fsize = 3407361
[HOST  ] [INFO]    86.234741 s: Inside else for read and scale
[HOST  ] [INFO]    86.234741 s: Inside while loop, uNumFrames = 974
[HOST  ] [INFO]    86.234771 s: fsize = 3420161
[HOST  ] [INFO]    86.234771 s: Inside else for read and scale
[HOST  ] [INFO]    86.234771 s: Inside while loop, uNumFrames = 973
[HOST  ] [INFO]    86.234771 s: fsize = 3432961
[HOST  ] [INFO]    86.234771 s: Inside else for read and scale
[HOST  ] [INFO]    86.234771 s: Inside while loop, uNumFrames = 972
[HOST  ] [INFO]    86.234802 s: fsize = 3445761
[HOST  ] [INFO]    86.234802 s: Inside else for read and scale
[HOST  ] [INFO]    86.234802 s: Inside while loop, uNumFrames = 971
[HOST  ] [INFO]    86.234802 s: fsize = 3458561
[HOST  ] [INFO]    86.234802 s: Inside else for read and scale

****** Segmentation fault caught ....

Faulty address is 0xa6499020, called from 0x77ddb
Totally Obtained 0 stack frames. signal number =11
Signal number = 11, Signal errno = 0
SI code = 1 (Address not mapped to object)
Fault addr = 0xa6499020
[bt] Execution path:

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]