kernel:Segmentation fault

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 一般爲空指針異常!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章