From: <cli...@li...> - 2009-06-28 12:06:30
|
Send clisp-cvs mailing list submissions to cli...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/clisp-cvs or, via email, send a message with subject or body 'help' to cli...@li... You can reach the person managing the list at cli...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of clisp-cvs digest..." CLISP CVS commits for today Today's Topics: 1. clisp/src ChangeLog,1.6927,1.6928 zthread.d,1.61,1.62 (Vladimir Tzankov) 2. clisp/src ChangeLog,1.6928,1.6929 zthread.d,1.62,1.63 (Vladimir Tzankov) ---------------------------------------------------------------------- Message: 1 Date: Sat, 27 Jun 2009 15:47:46 +0000 From: Vladimir Tzankov <vt...@us...> Subject: clisp/src ChangeLog,1.6927,1.6928 zthread.d,1.61,1.62 To: cli...@li... Message-ID: <E1M...@dd...> Update of /cvsroot/clisp/clisp/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv6207 Modified Files: ChangeLog zthread.d Log Message: (xlock_lock_helper): fix race condition causing deadlock between xlock_lock_helper and xcondition_wait_helper Index: zthread.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/zthread.d,v retrieving revision 1.61 retrieving revision 1.62 diff -u -d -r1.61 -r1.62 --- zthread.d 26 Jun 2009 15:43:06 -0000 1.61 +++ zthread.d 27 Jun 2009 15:47:44 -0000 1.62 @@ -904,26 +904,33 @@ #endif /* while we cannot get the real lock */ while (r = xmutex_raw_trylock(&l->xl_mutex)) { - /* check for interrupts before waiting */ - if (thr->_pending_interrupts) { - /* handle them */ - xmutex_raw_unlock(&l->xl_internal_mutex); - thr->_wait_mutex=NULL; - GC_SAFE_REGION_END_WITHOUT_INTERRUPTS(); - handle_pending_interrupts(); - thr->_wait_mutex=l; - GC_SAFE_REGION_BEGIN(); - xmutex_raw_lock(&l->xl_internal_mutex); - } - #ifdef POSIX_THREADS - if (timeout != THREAD_WAIT_INFINITE) { - r = pthread_cond_timedwait(&l->xl_wait_cv,&l->xl_internal_mutex,&ww); + if (!l->xl_owned) { + /* not owned but still locked - i.e. xcodition_wait() caused it. + wait forever - really soon pthread_cond_wait() will release it */ + r = xmutex_raw_lock(&l->xl_mutex); + break; } else { - r = pthread_cond_wait(&l->xl_wait_cv,&l->xl_internal_mutex); - } + /* check for interrupts before waiting */ + if (thr->_pending_interrupts) { + /* handle them */ + xmutex_raw_unlock(&l->xl_internal_mutex); + thr->_wait_mutex=NULL; + GC_SAFE_REGION_END_WITHOUT_INTERRUPTS(); + handle_pending_interrupts(); + thr->_wait_mutex=l; + GC_SAFE_REGION_BEGIN(); + xmutex_raw_lock(&l->xl_internal_mutex); + } + #ifdef POSIX_THREADS + if (timeout != THREAD_WAIT_INFINITE) { + r = pthread_cond_timedwait(&l->xl_wait_cv,&l->xl_internal_mutex,&ww); + } else { + r = pthread_cond_wait(&l->xl_wait_cv,&l->xl_internal_mutex); + } #else /* WIN32 */ - r = win32_xcondition_wait(&l->xl_wait_cv,&l->xl_wait_cv,timeout); + r = win32_xcondition_wait(&l->xl_wait_cv,&l->xl_wait_cv,timeout); #endif + } if (r != 0) break; } if (r == 0) { Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.6927 retrieving revision 1.6928 diff -u -d -r1.6927 -r1.6928 --- ChangeLog 26 Jun 2009 19:33:18 -0000 1.6927 +++ ChangeLog 27 Jun 2009 15:47:44 -0000 1.6928 @@ -1,3 +1,8 @@ +2009-06-27 Vladimir Tzankov <vtz...@gm...> + + * zthread.d (xlock_lock_helper): fix race condition causing deadlock + between xlock_lock_helper and xcondition_wait_helper + 2009-06-26 Sam Steingold <sd...@gn...> decouple pin_varobject from unprotect_heap_range for the sake of modules ------------------------------ Message: 2 Date: Sun, 28 Jun 2009 11:14:05 +0000 From: Vladimir Tzankov <vt...@us...> Subject: clisp/src ChangeLog,1.6928,1.6929 zthread.d,1.62,1.63 To: cli...@li... Message-ID: <E1M...@dd...> Update of /cvsroot/clisp/clisp/src In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv1974 Modified Files: ChangeLog zthread.d Log Message: (xlock_lock_helper) [WIN32_THREADS]: fix mutex locking. was typo when renaming xlock_t members Index: zthread.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/zthread.d,v retrieving revision 1.62 retrieving revision 1.63 diff -u -d -r1.62 -r1.63 --- zthread.d 27 Jun 2009 15:47:44 -0000 1.62 +++ zthread.d 28 Jun 2009 11:14:03 -0000 1.63 @@ -928,10 +928,10 @@ r = pthread_cond_wait(&l->xl_wait_cv,&l->xl_internal_mutex); } #else /* WIN32 */ - r = win32_xcondition_wait(&l->xl_wait_cv,&l->xl_wait_cv,timeout); + r = win32_xcondition_wait(&l->xl_wait_cv,&l->xl_internal_mutex,timeout); #endif + if (r != 0) break; } - if (r != 0) break; } if (r == 0) { ASSERT(!l->xl_owned); ASSERT(l->xl_recurse_count == 0); Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.6928 retrieving revision 1.6929 diff -u -d -r1.6928 -r1.6929 --- ChangeLog 27 Jun 2009 15:47:44 -0000 1.6928 +++ ChangeLog 28 Jun 2009 11:14:03 -0000 1.6929 @@ -1,3 +1,8 @@ +2009-06-28 Vladimir Tzankov <vtz...@gm...> + + * zthread.d (xlock_lock_helper) [WIN32_THREADS]: fix mutex locking. was + typo when renaming xlock_t members + 2009-06-27 Vladimir Tzankov <vtz...@gm...> * zthread.d (xlock_lock_helper): fix race condition causing deadlock ------------------------------ ------------------------------------------------------------------------------ ------------------------------ _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest, Vol 38, Issue 40 ***************************************** |