[問題] pthread_join segfault? (已解決)

看板C_and_CPP作者時間15年前 (2010/09/15 15:12), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 這是一個用pthread做matrix multiplication的練習 請下載編譯後,用以下的格式測試 ./a.out <SIZE> <#THREADS> i.e. ./a.out 64 4 會拿兩個64x64的矩陣,用4 個threads下去運作 結果會存到output.txt 希望得到的正確結果: 正常執行結束,沒有SEGFAULT 程式跑出來的錯誤結果: 當我用超過九個threads,程式在pthread_join segfault 以下是用gdb除錯的資訊: [Thread 0xafe01b90 (LWP 21729) exited] Thread 0 join with main thread with status=9 Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb76236b0 (LWP 21711)] 0xb77792de in __deallocate_stack () from /lib/tls/i686/cmov/libpthread.so.0 (gdb) bt #0 0xb77792de in __deallocate_stack () from /lib/tls/i686/cmov/libpthread.so.0 #1 0xb777a747 in pthread_join () from /lib/tls/i686/cmov/libpthread.so.0 #2 0x08048cc9 in main (argc=Cannot access memory at address 0x1 ) at pthread.c:100 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Linux Ubuntu 8.04 gcc4.2.4 有問題的code: (請善用置底文標色功能) http://pastebin.com/QbdvPDi4 補充說明: 感謝L大的指點,我一開始測試時是用define,所以沒有注意到NUM_THREADS 未定義,改了位置後就可以了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 149.169.43.96

09/15 15:13, , 1F
不知道這個『十』有什麼特殊的地方?
09/15 15:13, 1F

09/15 15:17, , 2F
我目前看到的問題是 NUM_THREADS 在有值之前就先用了...
09/15 15:17, 2F

09/15 15:17, , 3F
69 行的陣列應也需要動態宣告才是
09/15 15:17, 3F

09/15 15:22, , 4F
登!我真是眼睛黏到東西,謝謝樓上!馬上來改一下
09/15 15:22, 4F

09/15 15:23, , 5F
That's it!謝謝L大!
09/15 15:23, 5F
※ 編輯: PCIT 來自: 149.169.43.96 (09/15 15:25)
文章代碼(AID): #1Ca77eLb (C_and_CPP)