2015-04-08 56 views
0

任何變體,爲什麼使用函數close(cxt-> sysfs.dir_fd)後(在這種情況下cxt-> sysfs.dir_fd = 0)我得到錯誤NDK,C:使用函數時的致命信號6 - int close(int fd);

04-08 13:34:57.496 4766-4782/pro.org A/OpenGLRenderer﹕ Failed to create context, error = EGL_BAD_ALLOC 
04-08 13:34:57.496 4766-4782/pro.org A/libc﹕ Fatal signal 6 (SIGABRT), code -6 in tid 4782 (RenderThread) 

接近(cxt-> sysfs.dir_fd)也= 0,但應用程序崩潰... 我可以做什麼,防止錯誤,任何調試?在什麼方向看? 謝謝

+1

什麼是0?關閉參數,返回值還是兩者?我不習慣用Android來編寫代碼,但是如果你關閉了一些你沒有打開的東西,比如0(這是你開發的第一個東西),壞事將會發生... – Aracthor

+0

0 = both,argument並返回值 – Andreyua

+0

你能解釋爲什麼你試圖關閉cxt-> sysfs.dir_fd嗎?它看起來很重要:OpenGL可能需要渲染。 – Aracthor

回答

4

您關閉了OpenGL的主要資源。除非您關閉應用程序,否則您不得關閉此資源。

在您放入註釋的所有示例中,僅在應用程序結束時調用close。你應該這樣做。

+0

謝謝,但是如何防止這個錯誤,check -fd是如何引用OpenGL或NOT,你有什麼建議? – Andreyua

+0

@Andreyua--無論你想要做什麼,你都會做錯事。不要試圖關閉它,至少不要在你的程序中間。 –

+0

@Andreyua - 在大多數情況下,不僅OpenGL,當你在你的API中已經打開了一些fd的情況下啓動一個應用程序時,不要關閉它們直到應用程序結束。如果以後你通過打開其他東西來創建自己的fd,只要確保使它們與前面的那些不同。 – Aracthor

相關問題