0

私は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:
4

0 に答える 0