Display::Prepare(struct output *output)
+ output->secure_status = false;
+ if(output->next->bo)
+ {
+ gbm_perform(GBM_PERFORM_GET_SECURE_BUFFER_STATUS, output->next->bo, &output->secure_status);
+ fprintf(stderr,"output->next->bo exist\n");
+ }
+ else
+ {
+ fprintf(stderr,"output->next->bo didn't exist\n");
+ }
return 0;
}
上述代碼,運行時報錯Segmentation fault;
Debug 1.
Display::Prepare(struct output *output)
+ output->secure_status = false;
+ fprintf(stderr,"output->next->bo go maze\n");
+ fprintf(stderr,"output->next->bo go %p\n", output->next->bo);
+ if(output->next->bo)
+ {
+ gbm_perform(GBM_PERFORM_GET_SECURE_BUFFER_STATUS, output->next->bo, &output->secure_status);
+ fprintf(stderr,"output->next->bo exist\n");
+ }
+ else
+ {
+ fprintf(stderr,"output->next->bo didn't exist\n");
+ }
return 0;
}
報錯:
output->next->bo go maze
Segmentation fault
從上述,雖然output->next->bo存在,但是打印output->next->bo時報錯。
結論:
雖然output->next->bo存在,未必output->next存在,未必ouput存在。
Segmentation fault 一般爲空指針異常!