2012-06-24 144 views
0

我沒有長時間使用C,我不記得是否可以從另一個線程創建線程。 如果我努力,我得到這個錯誤:創建嵌套pthread

sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed. 

中止

有一種解決方法,以午餐從另外一個線程?有什麼特殊的東西我應該設置屬性來使它工作?

感謝

PS:我應該由大學項目

+0

它應該是可能的,但那麼你的代碼在哪裏... –

+0

我會簡化一些東西,如果我不能解決問題,我會發布它。 – fra

回答

3

此錯誤有無關線程並行線程只而不是fork()的要求使用。這表示您已經損壞了malloc用於簿記目的的內存,可能是通過溢出您從malloc獲取的塊中的緩衝區。

任何線程都可以創建新線程;對此沒有限制。

+0

謝謝。 沒有創建線程就沒有錯誤,這就是爲什麼我在搜索問題時有點失落。 我會繼續我的搜索...感謝指引我正確的方向。 – fra

+0

碰巧與創建線程一起發生的內部malloc調用可能只是觸發了崩潰... –

+0

我發現問題並且實際上它與malloc有關。再次感謝你的幫助。 – fra