「セグメンテーションフォルト(コアダンプされた)」"FILE * pFile;"によるセグメンテーションフォルト(コアダンプ)?
と処理が中断されました。
お願いします。ここ
疑わしい部品コード
...
FILE *pFile;
char buffer[100];
sprintf(buffer,"/var/www/html/%s.txt",topic);
pFile = fopen(buffer,"w");
この問題は、中に発生する可能性が上記 (入力しなかった場合、他)
if(NULL == pFile){
_mosquitto_log_printf(NULL, MOSQ_LOG_DEBUG,"open failure");
}else{
fwrite(payload,1,sizeof(payload)-1,pFile);
_mosquitto_log_printf(NULL, MOSQ_LOG_INFO, "File context : %s", payload);
}
fclose(pFile);
...
OS Ubuntu 14
'payload'とは何ですか? –
デバッグを使用してsegfaultの原因となった命令を確認しようとしましたか? – blatinox
'topic'が十分な長さである場合、作成するテキストがバッファに収まらない場合があります。これはスタック上にあるかのように見えるので、バッファオーバーランはおそらく 'pFile'やその他の変数、おそらくリターンアドレスを破壊します。 IOW:古典的なバッファオーバーラン(悪意のある意図はありません)です。あなたが言ったように、問題はif-else節を入力する前に発生する可能性があります。 –