aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorLAN-TW <lantw44@gmail.com>2012-11-14 09:44:26 +0800
committerLAN-TW <lantw44@gmail.com>2012-11-14 09:50:06 +0800
commita0a8496f1e04dc964e29cc4661193e92662eaffd (patch)
tree658e3c09a6d4ba9f3677e2a3e692ac3a4103ed72 /src/main.c
parenta7aee0e7423dfe23bd562f1f0f0a981bfbb2ff17 (diff)
downloadsctjudge-a0a8496f1e04dc964e29cc4661193e92662eaffd.tar.gz
sctjudge-a0a8496f1e04dc964e29cc4661193e92662eaffd.tar.zst
sctjudge-a0a8496f1e04dc964e29cc4661193e92662eaffd.zip
去除所有 PTHREAD_CANCEL_ASYNCHRONOUS 以避免中斷位置不正確造成問題
解決此已知問題:在 FreeBSD 上如果受測程式太快結束,有機會導致本程式無法結束。 目前的做法事都先改成 PTHREAD_CANCEL_DEFERRED 並加入 cancel point,但我在想之 後應該要想辦法把所有 pthread_cancel() 都去掉。
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index bee7c30..d46c4c3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -432,14 +432,15 @@ int main(int argc, char* argv[]){
pthread_attr_destroy(&joistate);
sem_post(&mcthr);
- /* 這個 semaphore 到這裡就沒用了,
- * sctjudge_makechild 一旦開始動就會把它 destroy 掉 */
pthread_join(tmain, (void**)&mtreturn);
/* XXX 底下這訊息很有可能讓使用者覺得很奇怪 */
pthread_mutex_destroy(&pidmutex);
pthread_mutex_destroy(&tkill_mx);
pthread_mutex_destroy(&tdisplay_mx);
+ sem_destroy(&mcthr);
+ sem_destroy(&addthr);
+
if(dryrun){
return SCTEXIT_SUCCESS;
}