$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r57297 - in sandbox/stm/branches/vbe: boost/stm/detail libs/stm/test
From: vicente.botet_at_[hidden]
Date: 2009-11-02 17:48:08
Author: viboes
Date: 2009-11-02 17:48:07 EST (Mon, 02 Nov 2009)
New Revision: 57297
URL: http://svn.boost.org/trac/boost/changeset/57297
Log:
TBoost.STM vbe: Using scoped locks in latm deferred update files.
Text files modified: 
   sandbox/stm/branches/vbe/boost/stm/detail/latm_def_full_impl.hpp |    99 ++++++++-------                         
   sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tm_impl.hpp   |    94 +++++++-------                          
   sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tx_impl.hpp   |    92 ++++++++------                          
   sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_full_impl.hpp |     8                                         
   sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tm_impl.hpp   |     4                                         
   sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tx_impl.hpp   |     4                                         
   sandbox/stm/branches/vbe/libs/stm/test/Jamfile.v2                |   249 ++++++++++++++++++++++----------------- 
   7 files changed, 297 insertions(+), 253 deletions(-)
Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_def_full_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_def_full_impl.hpp	(original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_def_full_impl.hpp	2009-11-02 17:48:07 EST (Mon, 02 Nov 2009)
@@ -58,9 +58,9 @@
    //--------------------------------------------------------------------------
    if (latm::instance().latmLockedLocks_.empty())
    {
-      synchro::lock_guard<Mutex> lock_g(*general_lock());
+      synchro::lock_guard<Mutex> lk_g(*general_lock());
       //synchro::lock(*general_lock());
-      synchro::lock_guard<Mutex> lock_i(*inflight_lock());
+      synchro::lock_guard<Mutex> lk_i(*inflight_lock());
       //synchro::lock(*inflight_lock());
 
       std::list<transaction*> txList;
@@ -91,12 +91,15 @@
       //synchro::unlock(*inflight_lock());
    }
 
-   try { latm::instance().latmLockedLocks_.insert(mutex); }
-   catch (...)
-   {
-      synchro::unlock(*inflight_lock());
-      throw;
-   }
+   //try { 
+       latm::instance().latmLockedLocks_.insert(mutex); 
+   //}
+   //catch (...)
+   //{
+      //synchro::unlock(*inflight_lock());
+      // BUG ??? 
+   //   throw;
+   //}
 
    return true;
 }
@@ -115,14 +118,12 @@
       t->add_to_obtained_locks(mutex);
 
       t->commit_deferred_update_tx();
-       { synchro::lock_guard<Mutex> lock_l(*latm_lock());
+       { synchro::lock_guard<Mutex> lk_l(*latm_lock());
       //synchro::lock(*latm_lock());
       latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       //synchro::unlock(*latm_lock());
        }
 
-      // TBR if (hadLock) return 0;
-      // TBR else return lock(mutex);
       if (hadLock) return;
       else synchro::lock(*mutex);
       return;
@@ -131,41 +132,43 @@
    int waitTime = 0, aborted = 0;
    for (;;)
    {
-      // TBR int val = lock(mutex);
-      // TBR if (0 != val) return val;
-      //{
-      synchro::lock(*mutex);
-      //synchro::lock_guard<Mutex> lock_m(*mutex);
-      synchro::lock(latm::instance().latmMutex_);
-      //synchro::lock_guard<Mutex> lock_l(latmMutex_);
-      try
       {
+      //synchro::lock(*mutex);
+      synchro::unique_lock<latm::mutex_type> lk(*mutex);
+      //synchro::lock(latm::instance().latmMutex_);
+      synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
+      //try
+      //{
          //--------------------------------------------------------------------
          // if we are able to do the core lock work, break
          //--------------------------------------------------------------------
-         if (def_do_core_full_pthread_lock_mutex(mutex, waitTime, aborted)) break;
-      }
-      catch (...)
-      {
-         synchro::unlock(*mutex);
-         synchro::unlock(latm::instance().latmMutex_);
-         throw;
-      }
+         if (def_do_core_full_pthread_lock_mutex(mutex, waitTime, aborted)) {
+            latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+             lk.release();
+             return;
+         }
+      //}
+      //catch (...)
+      //{
+         //synchro::unlock(*mutex);
+         //synchro::unlock(latm::instance().latmMutex_);
+      //   throw;
+      //}
 
       //-----------------------------------------------------------------------
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
-      synchro::unlock(*mutex);
-      synchro::unlock(latm::instance().latmMutex_);
-      //}
+      //synchro::unlock(*mutex);
+      //synchro::unlock(latm::instance().latmMutex_);
+      }
 
       SLEEP(cm_lock_sleep_time());
       waitTime += cm_lock_sleep_time();
       ++aborted;
    }
 
-   latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
-   synchro::unlock(latm::instance().latmMutex_);
+   //latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+   //synchro::unlock(latm::instance().latmMutex_);
    return;
 }
 
@@ -183,7 +186,7 @@
       t->add_to_obtained_locks(mutex);
 
       t->commit_deferred_update_tx();
-       { synchro::lock_guard<Mutex> lock_l(*latm_lock());
+       { synchro::lock_guard<Mutex> lk_l(*latm_lock());
       //synchro::lock(*latm_lock());
       latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       //synchro::unlock(*latm_lock());
@@ -193,37 +196,39 @@
       else return synchro::try_lock(*mutex);
    }
 
-   //int val = synchro::trylock(*mutex);
-   //if (0 != val) return val;
-   if (!synchro::try_lock(*mutex)) return false;
+   //if (!synchro::try_lock(*mutex)) return false;
+   synchro::unique_lock<latm::mutex_type> lk(*mutex, synchro::try_to_lock);
+   if (!lk) return false;
+
 
    //synchro::lock(latmMutex_);
-    synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
+    synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
 
-   try
-   {
+   //try
+   //{
       //-----------------------------------------------------------------------
       // if !core done, since trylock, we cannot stall & retry - just exit
       //-----------------------------------------------------------------------
       if (!def_do_core_full_pthread_lock_mutex(mutex, 0, 0))
       {
-         synchro::unlock(*mutex);
+         //synchro::unlock(*mutex);
          //synchro::unlock(latmMutex_);
          //return -1;
          return false;
       }
-   }
-   catch (...)
-   {
-      synchro::unlock(*mutex);
+   //}
+   //catch (...)
+   //{
+      //synchro::unlock(*mutex);
       //synchro::unlock(latmMutex_);
-      throw;
-   }
+   //   throw;
+   //}
 
    latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
    //synchro::unlock(latmMutex_);
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
+   lk.release();
    return true;
 }
 
@@ -233,7 +238,7 @@
 inline void transaction::def_full_pthread_unlock_mutex(latm::mutex_type* mutex)
 {
    bool hasLock = true;
-   { synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
+   { synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
     //synchro::lock(latmMutex_);
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tm_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tm_impl.hpp	(original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tm_impl.hpp	2009-11-02 17:48:07 EST (Mon, 02 Nov 2009)
@@ -64,8 +64,8 @@
       // so we can abort all the in-flight transactions
       if (latm::instance().latmLockedLocks_.empty())
       {
-         synchro::lock_guard<Mutex> autolock_g(*general_lock());
-         synchro::lock_guard<Mutex> autolock_i(*inflight_lock());
+         synchro::lock_guard<Mutex> lk_g(*general_lock());
+         synchro::lock_guard<Mutex> lk_i(*inflight_lock());
 
          std::list<transaction*> txList;
 
@@ -109,14 +109,12 @@
       t->add_to_currently_locked_locks(mutex);
 
       {
-          synchro::lock_guard<Mutex> lock_l(*latm_lock());
+          synchro::lock_guard<Mutex> lk_l(*latm_lock());
       //synchro::lock(*latm_lock());
       latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       //synchro::unlock(*latm_lock());
       }
 
-      // TBR if (hadLock) return 0;
-      // TBR else return lock(mutex);
       if (hadLock) return;
       else synchro::lock(*mutex);
       return;
@@ -126,43 +124,47 @@
 
    for (;;)
    {
-      // TRR int val = lock(mutex);
-      // TRR if (0 != val) return val;
-       //{
-       //synchro::lock_guard<Mutex> lock_m(*latm_lock());
-       //synchro::lock_guard<Mutex> lock_l(latmMutex_);
-       synchro::lock(*mutex);
-       synchro::lock(latm::instance().latmMutex_);
+       {
+       //synchro::lock(*mutex);
+         synchro::unique_lock<latm::mutex_type> lk(*mutex);
+           
+       //synchro::lock(latm::instance().latmMutex_);
+       synchro::lock_guard<Mutex> lk_l(*latm_lock());
 
-      try
-      {
+      //try
+      //{
          //--------------------------------------------------------------------
          // if we are able to do the core lock work, break
          //--------------------------------------------------------------------
          if (def_do_core_tm_conflicting_lock_pthread_lock_mutex
-            (mutex, waitTime, aborted)) break;
-      }
-      catch (...)
-      {
-         synchro::unlock(*mutex);
-         synchro::unlock(latm::instance().latmMutex_);
-         throw;
-      }
+            (mutex, waitTime, aborted)) {
+                latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+                //synchro::unlock(latm::instance().latmMutex_);
+                lk.release();
+                return;
+            }
+      //}
+      //catch (...)
+      //{
+         //synchro::unlock(*mutex);
+         //synchro::unlock(latm::instance().latmMutex_);
+      //   throw;
+      //}
 
       //-----------------------------------------------------------------------
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
-      synchro::unlock(*mutex);
-      synchro::unlock(latm::instance().latmMutex_);
-      //}
+      //synchro::unlock(*mutex);
+      //synchro::unlock(latm::instance().latmMutex_);
+      }
 
       SLEEP(cm_lock_sleep_time());
       waitTime += cm_lock_sleep_time();
       ++aborted;
    }
 
-   latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
-   synchro::unlock(latm::instance().latmMutex_);
+   //latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+   //synchro::unlock(latm::instance().latmMutex_);
 
    return;
 }
@@ -182,7 +184,7 @@
       t->add_to_currently_locked_locks(mutex);
 
       {
-      synchro::lock_guard<Mutex> lock_l(*latm_lock());
+      synchro::lock_guard<Mutex> lk_l(*latm_lock());
       //synchro::lock(*latm_lock());
       latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       //synchro::unlock(*latm_lock());
@@ -191,41 +193,39 @@
       if (hadLock) return true;
       else return synchro::try_lock(*mutex);
    }
-
-   //synchro::unique_lock<Mutex> lock_m(*mutex, synchro::try_to_lock);
-   //if (lock_m) return true;
-   
-   //int val = synchro::try_lock(*mutex);
-   //if (0 != val) return val;
-   if (!synchro::try_lock(*mutex)) return false;
+  
+   //if (!synchro::try_lock(*mutex)) return false;
+   synchro::unique_lock<latm::mutex_type> lk(*mutex, synchro::try_to_lock);
+   if (!lk) return false;
 
    //synchro::lock(latmMutex_);
-   synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
+   synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
 
-   try
-   {
+   //try
+   //{
       //-----------------------------------------------------------------------
       // if !core done, since trylock, we cannot stall & retry - just exit
       //-----------------------------------------------------------------------
       if (!def_do_core_tm_conflicting_lock_pthread_lock_mutex(mutex, 0, 0))
       {
-         synchro::unlock(*mutex); // BUG ???
+         //synchro::unlock(*mutex);
          //synchro::unlock(latmMutex_);
          //return -1;
          return false;
       }
-   }
-   catch (...)
-   {
-      synchro::unlock(*mutex); // BUG ???
+   //}
+   //catch (...)
+   //{
+      //synchro::unlock(*mutex);
       //synchro::unlock(latmMutex_);
-      throw;
-   }
+   //   throw;
+   //}
 
    latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
    //synchro::unlock(latmMutex_);
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
+   lk.release();
    return true;
 }
 
@@ -236,7 +236,7 @@
 {
    bool hasLock = true;
    {
-   synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
+   synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
    //synchro::lock(latmMutex_);
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
@@ -269,8 +269,6 @@
    //synchro::unlock(latmMutex_);
    }
 
-   // TBR if (hasLock) return unlock(mutex);
-   // TBR else return 0;
    if (hasLock) synchro::unlock(*mutex);
    return;
 }
Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tx_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tx_impl.hpp	(original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tx_impl.hpp	2009-11-02 17:48:07 EST (Mon, 02 Nov 2009)
@@ -50,8 +50,8 @@
    // set. do not keep in-flight transactions blocked once the transactions have
    // been processed.
    //--------------------------------------------------------------------------
-   synchro::lock_guard<Mutex> autolock_g(*general_lock());
-   synchro::lock_guard<Mutex> autolock_i(*inflight_lock());
+   synchro::lock_guard<Mutex> lk_g(*general_lock());
+   synchro::lock_guard<Mutex> lk_i(*inflight_lock());
 
    std::list<transaction *> txList;
    std::set<thread_id_t> txThreadId;
@@ -152,56 +152,62 @@
 
       if (!t->is_currently_locked_lock(mutex))
       {
-         synchro::lock(*mutex); // TBR if (0 != lock(mutex)) return -1;
+         synchro::lock(*mutex);
       }
 
       t->add_to_currently_locked_locks(mutex);
       t->add_to_obtained_locks(mutex);
       t->commit_deferred_update_tx();
 
-      synchro::lock(latm::instance().latmMutex_);
+      //synchro::lock(latm::instance().latmMutex_);
+      synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
       def_do_core_tx_conflicting_lock_pthread_lock_mutex
          (mutex, 0, 0, true);
-      synchro::unlock(latm::instance().latmMutex_);
+      //synchro::unlock(latm::instance().latmMutex_);
 
       return;
    }
 
    for (;;)
    {
-      synchro::lock(*mutex); // TBR int val = lock(mutex);
-      // TBR if (0 != val) return val;
+      {//synchro::lock(*mutex);
+      synchro::unique_lock<latm::mutex_type> lk(*mutex);
 
-      synchro::lock(latm::instance().latmMutex_);
+      //synchro::lock(latm::instance().latmMutex_);
+      synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
 
-      try
-      {
+      //try
+      //{
          //--------------------------------------------------------------------
          // if we are able to do the core lock work, break
          //--------------------------------------------------------------------
          if (def_do_core_tx_conflicting_lock_pthread_lock_mutex
-            (mutex, waitTime, aborted, false)) break;
-      }
-      catch (...)
-      {
-         synchro::unlock(*mutex);
-         synchro::unlock(latm::instance().latmMutex_);
-         throw;
-      }
+            (mutex, waitTime, aborted, false)) {
+                latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+                lk.release();
+                return;
+            }
+      //}
+      //catch (...)
+      //{
+         //synchro::unlock(*mutex);
+         //synchro::unlock(latm::instance().latmMutex_);
+      //   throw;
+      //}
 
       //-----------------------------------------------------------------------
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
-      synchro::unlock(*mutex);
-      synchro::unlock(latm::instance().latmMutex_);
-
+      //synchro::unlock(*mutex);
+      } //synchro::unlock(latm::instance().latmMutex_);
+     
       SLEEP(cm_lock_sleep_time());
       waitTime += cm_lock_sleep_time();
       ++aborted;
    }
 
-   latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
-   synchro::unlock(latm::instance().latmMutex_);
+   //latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+   //synchro::unlock(latm::instance().latmMutex_);
 
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
@@ -219,11 +225,12 @@
 
    bool txIsIrrevocable = false;
 
-   //int val = synchro::try_lock(*mutex);
-   //if (0 != val) return val;
-   if (!synchro::try_lock(*mutex)) return false;
+   //if (!synchro::try_lock(*mutex)) return false;
+   synchro::unique_lock<latm::mutex_type> lk(*mutex, synchro::try_to_lock);
+   if (!lk) return false;
 
-   synchro::lock(latm::instance().latmMutex_);
+   //synchro::lock(latm::instance().latmMutex_);
+   synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
@@ -234,31 +241,32 @@
       t->commit_deferred_update_tx();
    }
 
-   try
-   {
+   //try
+   //{
       //-----------------------------------------------------------------------
       // if !core done, since trylock, we cannot stall & retry - just exit
       //-----------------------------------------------------------------------
       if (!def_do_core_tx_conflicting_lock_pthread_lock_mutex(mutex, 0, 0, txIsIrrevocable))
       {
-         synchro::unlock(*mutex);
-         synchro::unlock(latm::instance().latmMutex_);
+         //synchro::unlock(*mutex);
+         //synchro::unlock(latm::instance().latmMutex_);
          //return -1;
          return false;
       }
-   }
-   catch (...)
-   {
-      synchro::unlock(*mutex);
-      synchro::unlock(latm::instance().latmMutex_);
-      throw;
-   }
+   //}
+   //catch (...)
+   //{
+      //synchro::unlock(*mutex);
+      //synchro::unlock(latm::instance().latmMutex_);
+   //   throw;
+   //}
 
    latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
-   synchro::unlock(latm::instance().latmMutex_);
+   //synchro::unlock(latm::instance().latmMutex_);
 
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
+   lk.release();
    return true;
 }
 
@@ -267,9 +275,9 @@
 //----------------------------------------------------------------------------
 inline void transaction::def_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
 {
-   synchro::lock_guard<Mutex> autolock_l(*latm_lock());
-   synchro::lock_guard<Mutex> autolock_g(*general_lock());
-   synchro::lock_guard<Mutex> autolock_i(*inflight_lock());
+   synchro::lock_guard<Mutex> lk_l(*latm_lock());
+   synchro::lock_guard<Mutex> lk_g(*general_lock());
+   synchro::lock_guard<Mutex> lk_i(*inflight_lock());
    bool hasLock = true;
 
    if (transaction* t = get_inflight_tx_of_same_thread(true))
Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_full_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_full_impl.hpp	(original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_full_impl.hpp	2009-11-02 17:48:07 EST (Mon, 02 Nov 2009)
@@ -149,7 +149,7 @@
       // TBR int val = lock(mutex);
       // TBR if (0 != val) return val;
       {//synchro::lock(*mutex);
-      synchro::unique_lock<Mutex> lk(*mutex);
+      synchro::unique_lock<latm::mutex_type> lk(*mutex);
 
       //synchro::lock(latm::instance().latmMutex_);
       synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
@@ -209,11 +209,7 @@
       else return synchro::try_lock(*mutex);
    }
 
-   //synchro::unique_lock<Mutex> lock_m(*mutex, synchro::try_to_lock);
-   //if (lock_m) return true;
-   //int val = synchro::try_lock(*mutex);
-   //if (0 != val) return val;
-   synchro::unique_lock<Mutex> lk(*mutex, synchro::try_to_lock);
+   synchro::unique_lock<latm::mutex_type> lk(*mutex, synchro::try_to_lock);
    if (!lk) return false;
    //if (!synchro::try_lock(*mutex)) return false;
 
Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tm_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tm_impl.hpp	(original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tm_impl.hpp	2009-11-02 17:48:07 EST (Mon, 02 Nov 2009)
@@ -138,7 +138,7 @@
    for (;;)
    {
       {//synchro::lock(*mutex);
-      synchro::unique_lock<Mutex> lk(*mutex);
+      synchro::unique_lock<latm::mutex_type> lk(*mutex);
 
       //synchro::lock(latm::instance().latmMutex_);
        synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
@@ -188,7 +188,7 @@
 
    //int val = synchro::try_lock(*mutex);
    //if (0 != val) return val;
-   synchro::unique_lock<Mutex> lk(*mutex, synchro::try_to_lock);
+   synchro::unique_lock<latm::mutex_type> lk(*mutex, synchro::try_to_lock);
    if (!lk) return false;
    //if (!synchro::try_lock(*mutex)) return false;
 
Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tx_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tx_impl.hpp	(original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tx_impl.hpp	2009-11-02 17:48:07 EST (Mon, 02 Nov 2009)
@@ -216,7 +216,7 @@
       // TBR int val = lock(mutex);
       // TBR if (0 != val) return val;
       {//synchro::lock(*mutex);
-      synchro::unique_lock<Mutex> lk(*mutex);
+      synchro::unique_lock<latm::mutex_type> lk(*mutex);
 
       //synchro::lock(latm::instance().latmMutex_);
       synchro::lock_guard<Mutex> lk_l(latm::instance().latmMutex_);
@@ -271,7 +271,7 @@
 
    //int val = synchro::try_lock(*mutex);
    //if (0 != val) return val;
-   synchro::unique_lock<Mutex> lk(*mutex, synchro::try_to_lock);
+   synchro::unique_lock<latm::mutex_type> lk(*mutex, synchro::try_to_lock);
    if (!lk) return false;
    //if (!synchro::try_lock(*mutex)) return false;
 
Modified: sandbox/stm/branches/vbe/libs/stm/test/Jamfile.v2
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/Jamfile.v2	(original)
+++ sandbox/stm/branches/vbe/libs/stm/test/Jamfile.v2	2009-11-02 17:48:07 EST (Mon, 02 Nov 2009)
@@ -53,24 +53,9 @@
 
     alias def_invalid
         :
-            ########### fails sometimes
-            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
-            [ run stm : -bench accounts -def -threads 2 -inserts 100 : : : test_accounts_def_t2_i100 ]
-            ########### fails sometimes
-            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
-            [ run stm : -bench accounts -def -threads 4 -inserts 100 : : : test_accounts_def_t4_i100 ]
-
             [ run stm : -bench hashmap -def -threads 2 -inserts 100 : : : test_hashmap_def_t2_i100 ]
-            ########### fails
-            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
-            #[ run stm : -bench hashmap -def -threads 4 -inserts 100 : : : test_hashmap_def_t4_i100 ]
 
 
-            ########### fails
-            # /bin/sh: line 4:  2944 Aborted                 (core dumped) "bin/test_ht_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_ht_def_t2_i1000.exe" > "bin/test_ht_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_ht_def_t2_i1000.output" 2>&1
-            # Rounding max threads to the next multiple of 4 (4).
-            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
-            #[ run stm : -bench ht -def -threads 2 -inserts 100 -latm full : : : test_ht_def_full_t2_i100 ]
             [ run stm : -bench ht -def -threads 2 -inserts 100 -latm tm : : : test_ht_def_tm_t2_i100 ]
             [ run stm : -bench ht -def -threads 4 -inserts 100 -latm tm : : : test_ht_def_tm_t4_i100 ]
             [ run stm : -bench ht -def -threads 2 -inserts 100 -latm tx : : : test_ht_def_tx_t2_i100 ]
@@ -83,22 +68,9 @@
             #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
             [ run stm : -bench linkedlist -def -threads 4 -inserts 100 : : : test_linkedlist_def_t4_i100 ]
 
-            ########### fails
-            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
-            #[ run stm : -bench ll -def -threads 2 -inserts 100 -latm full : : : test_ll_def_full_t2_i100 ]
             [ run stm : -bench ll -def -threads 2 -inserts 100 -latm tm : : : test_ll_def_tm_t2_i100 ]
             [ run stm : -bench ll -def -threads 4 -inserts 100 -latm tm : : : test_ll_def_tm_t4_i100 ]
-            ########### fails
-            #[ run stm : -bench ll -def -threads 2 -inserts 100 -latm tx : : : test_ll_def_tx_t2_i100 ]
 
-            ########### fails all-modes
-            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
-            #   19469 [sig] test_tx_linear_lock_def_t2 3768 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)
-            #[ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm full : : : test_tx_linear_lock_def_full_t2_i100 ]
-            ########### fails
-            #[ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm tm : : : test_tx_linear_lock_def_tm_t2_i100 ]
-            ########### fails
-            #[ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm tx : : : test_tx_linear_lock_def_tx_t2_i100 ]
 
             [ run stm : -bench isolated_int_lock_in_tx -def -threads 2 -inserts 100 -latm full : : : test_isolated_int_lock_in_tx_def_full_t2_i100 ]
             [ run stm : -bench isolated_int_lock_in_tx -def -threads 4 -inserts 100 -latm full : : : test_isolated_int_lock_in_tx_def_full_t4_i100 ]
@@ -107,42 +79,10 @@
             [ run stm : -bench isolated_int_lock_in_tx -def -threads 2 -inserts 100 -latm tx : : : test_isolated_int_lock_in_tx_def_tx_t2_i100 ]
             [ run stm : -bench isolated_int_lock_in_tx -def -threads 4 -inserts 100 -latm tx : : : test_isolated_int_lock_in_tx_def_tx_t4_i100 ]
 
-            ###########  fails all-modes
-            # /bin/sh: line 4:  3660 Segmentation fault      (core dumped) "bin/test_isolated_composed_int_lock_def_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_t2.exe" > "bin/test_isolated_composed_int_lock_def_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_t2.output" 2>&1
-            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
-            #[ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm full : : : test_isolated_composed_int_lock_def_full_t2_i100 ]
-            ########### fails
-            # /bin/sh: line 4:  4744 Aborted                 (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tm > "bin/test_isolated_composed_int_lock_def_tm_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_tm_t2_i100.output" 2>&1
-            #[ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tm : : : test_isolated_composed_int_lock_def_tm_t2_i100 ]
-            ########### fails
-            # /bin/sh: line 4:  4772 Aborted                 (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tx > "bin/test_isolated_composed_int_lock_def_tx_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_tx_t2_i100.output" 2>&1
-            #[ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tx : : : test_isolated_composed_int_lock_def_tx_t2_i100 ]
 
-            ###########  fails
-            #/bin/sh: line 4:  4536 Aborted                 (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm full > "bin/test_isolated_composed_int_lock2_def_full_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_def_full_t2_i100.output" 2>&1
-            #====== BEGIN OUTPUT ======
-            #61 i= 0
-            #66 i=0 end= 50 count= 1
-            #70 lock
-            #73	1
-            #74 unlock
-            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
-            #[ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm full : : : test_isolated_composed_int_lock2_def_full_t2_i100 ]
-            ###########  fails
-            #/bin/sh: line 4:  4556 Aborted                 (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm tm > "bin/test_isolated_composed_int_lock2_def_tm_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_def_tm_t2_i100.output" 2>&1
-            #====== BEGIN OUTPUT ======
-            #61 i= 0
-            #66 i=0 end= 50 count= 1
-            #70 lock            
-            #[ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm tm : : : test_isolated_composed_int_lock2_def_tm_t2_i100 ]
             [ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm tx : : : test_isolated_composed_int_lock2_def_tx_t2_i100 ]
-            ###########  fails
-            #[ run stm : -bench isolated_composed_int_lock2 -def -threads 4 -inserts 100 -latm tx : : : test_isolated_composed_int_lock2_def_tx_t4_i100 ]
 
             [ run stm : -bench irrevocable_int -def -threads 2 -inserts 100 : : : test_irrevocable_int_def_t2_i100 ]
-            ###########  fails sometimes
-            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
-            #[ run stm : -bench irrevocable_int -def -threads 4 -inserts 100 : : : test_irrevocable_int_def_t4_i100 ]
 
             ########### deadlock. killed after 0:26. 00% CPU  all-modes
             #[ run stm : -bench lot_example -def -threads 2 -inserts 100 -latm full : : : test_lot_example_def_full_t2_i100 ]
@@ -167,35 +107,12 @@
             ##[ run stm : -bench nested_tx -def -threads 2 -inserts 100 -latm tx : : : test_nested_tx_def_tx_t2_i100 ]
 
             [ run stm : -bench rbtree -def -threads 2 -inserts 100 : : : test_rbtree_def_t2_i100 ]
-            ########### fails sometimes
-            #[ run stm : -bench rbtree -def -threads 4 -inserts 100 : : : test_rbtree_def_t4_i100 ]
 
             [ run stm : -bench smart -def -threads 4 -inserts 100 : : : test_smart_def_t4_i100 ]
 
-            ########### fails all-modes
-            # /bin/sh: line 4:  2376 Aborted                 (core dumped) "bin/test_using_linkedlist_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_def_t2_i1000.exe" > "bin/test_using_linkedlist_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_def_t2_i1000.output" 2>&1
-            #[ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm full : : : test_using_linkedlist_def_full_t2_i100 ]
-            ########### fails
-            #[ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm tm : : : test_using_linkedlist_def_tm_t2_i100 ]
-            ########### fails
-            #[ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm tx : : : test_using_linkedlist_def_tx_t2_i100 ]
 
-            ########### fails all-modes
-            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
-            #[ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm full : : : test_hashmap_w_locks_def_full_t2_i100 ]
-            ########### fails
-            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
-            #[ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm tm : : : test_hashmap_w_locks_def_tm_t2_i100 ]
-            ########### fails
-            #[ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm tx : : : test_hashmap_w_locks_def_tx_t2_i100 ]
 
-            ########### fails
-            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
-            #[ run stm : -bench list_hash_w_locks -def -threads 2 -inserts 100 -latm full : : : test_list_hash_w_locks_def_full_t2_i100 ]
             [ run stm : -bench list_hash_w_locks -def -threads 2 -inserts 100 -latm tm : : : test_list_hash_w_locks_def_tm_t2_i100 ]
-            ########### fails
-            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
-            #[ run stm : -bench list_hash_w_locks -def -threads 4 -inserts 100 -latm tm : : : test_list_hash_w_locks_def_tm_t4_i100 ]
             [ run stm : -bench list_hash_w_locks -def -threads 2 -inserts 100 -latm tx : : : test_list_hash_w_locks_def_tx_t2_i100 ]
             [ run stm : -bench list_hash_w_locks -def -threads 4 -inserts 100 -latm tx : : : test_list_hash_w_locks_def_tx_t4_i100 ]
     ;
@@ -221,10 +138,6 @@
             [ run stm : -bench ll -dir -threads 4 -inserts 100 -latm full : : : test_ll_dir_t4_full_i100 ]
             [ run stm : -bench ll -dir -threads 2 -inserts 100 -latm tm : : : test_ll_dir_t2_tm_i100 ]
             [ run stm : -bench ll -dir -threads 4 -inserts 100 -latm tm : : : test_ll_dir_t4_tm_i100 ]
-            ########### fails 
-            #[ run stm : -bench ll -dir -threads 2 -inserts 100 -latm tx : : : test_ll_dir_t2_tx_i100 ]
-            ########### fails sometimes
-            #[ run stm : -bench ll -dir -threads 4 -inserts 100 -latm tx : : : test_ll_dir_t4_tx_i100 ]
 
             ########### fails with CHECK  all-modes
             #/bin/sh: line 4:  3764 Aborted                 (core dumped) "bin/test_tx_linear_lock_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_tx_linear_lock_dir_t2.exe" > "bin/test_tx_linear_lock_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_tx_linear_lock_dir_t2.output" 2>&1
@@ -233,8 +146,6 @@
             [ run stm : -bench tx_linear_lock -dir -threads 2 -inserts 100 -latm full : : : test_tx_linear_lock_dir_full_t2_i100 ]
             ########### 
             #[ run stm : -bench tx_linear_lock -dir -threads 4 -inserts 100 -latm full : : : test_tx_linear_lock_dir_full_t4_i100 ]
-            ########### fails 
-            #[ run stm : -bench tx_linear_lock -dir -threads 2 -inserts 100 -latm tm : : : test_tx_linear_lock_dir_tm_t2_i100 ]
             ########### deadlock
             #[ run stm : -bench tx_linear_lock -dir -threads 2 -inserts 100 -latm tx : : : test_tx_linear_lock_dir_tx_t2_i100 ]
 
@@ -252,16 +163,7 @@
             ########### fails 
             #[ run stm : -bench isolated_composed_int_lock -dir -threads 2 -inserts 100 -latm tx : : : test_isolated_composed_int_lock_dir_tx_t2_i100 ]
 
-            ###########  fails
-            # /bin/sh: line 4:  3172 Aborted                 (core dumped) "bin/test_isolated_composed_int_lock2_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_dir_t2.exe" > "bin/test_isolated_composed_int_lock2_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_dir_t2.output" 2>&1
-            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
-            #      11 [sig] test_isolated_composed_int_lock_def_t2 3660 _cygtls::handle_except ions: Error while dumping state (probably corrupted stack)
-            #[ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100  -latm full : : : test_isolated_composed_int_lock2_dir_full_t2_i100 ]
-            ########### fails 
-            #[ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100  -latm tm : : : test_isolated_composed_int_lock2_dir_tm_t2_i100 ]
             [ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100  -latm tx : : : test_isolated_composed_int_lock2_dir_tx_t2_i100 ]
-            ########### fails 
-            #[ run stm : -bench isolated_composed_int_lock2 -dir -threads 4 -inserts 100  -latm tx : : : test_isolated_composed_int_lock2_dir_tx_t4_i100 ]
 
             [ run stm : -bench irrevocable_int -dir -threads 4 -inserts 100 : : : test_irrevocable_int_dir_t4_i100 ]
 
@@ -288,13 +190,6 @@
 
             [ run stm : -bench smart -dir -threads 4 -inserts 100 : : : test_smart_dir_t4_i100 ]
 
-            ########### fails all-modes
-            #/bin/sh: line 4:   408 Aborted                 (core dumped) "bin/test_using_linkedlist_dir_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_dir_t2_i1000.exe" > "bin/test_using_linkedlist_dir_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_dir_t2_i1000.output" 2>&1
-            #[ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm full : : : test_using_linkedlist_dir_full_t2_i100 ]
-            ########### fails
-            #[ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm tm : : : test_using_linkedlist_dir_tm_t2_i100 ]
-            ########### fails
-            #[ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm tx : : : test_using_linkedlist_dir_tx_t2_i100 ]
 
             [ run stm : -bench hashmap_w_locks -dir -threads 4 -inserts 100 -latm full : : : test_hashmap_w_locks_dir_full_t4_i100 ]
             [ run stm : -bench hashmap_w_locks -dir -threads 4 -inserts 100 -latm tm : : : test_hashmap_w_locks_dir_tm_t4_i100 ]
@@ -332,6 +227,148 @@
         : dir_invalid
     ;
 
+    alias fails_sometimes
+        : 
+            ########### fails sometimes
+            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+            [ run stm : -bench accounts -def -threads 2 -inserts 100 : : : test_accounts_def_t2_i100 ]
+            ########### fails sometimes
+            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+            [ run stm : -bench accounts -def -threads 4 -inserts 100 : : : test_accounts_def_t4_i100 ]
+
+            ########### fails sometimes
+            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+            [ run stm : -bench hashmap -def -threads 4 -inserts 100 : : : test_hashmap_def_t4_i100 ]
+            
+            ########### fails sometimes
+            [ run stm : -bench ll -def -threads 2 -inserts 100 -latm tx : : : test_ll_def_tx_t2_i100 ]
+            
+            ###########  fails sometimes
+            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+            [ run stm : -bench irrevocable_int -def -threads 4 -inserts 100 : : : test_irrevocable_int_def_t4_i100 ]
+
+            ########### fails sometimes
+            [ run stm : -bench rbtree -def -threads 4 -inserts 100 : : : test_rbtree_def_t4_i100 ]
+
+            ########### fails 
+            [ run stm : -bench ll -dir -threads 2 -inserts 100 -latm tx : : : test_ll_dir_t2_tx_i100 ]
+
+            ########### fails sometimes
+            [ run stm : -bench ll -dir -threads 4 -inserts 100 -latm tx : : : test_ll_dir_t4_tx_i100 ]
+
+            ###########  fails
+            # /bin/sh: line 4:  3172 Aborted                 (core dumped) "bin/test_isolated_composed_int_lock2_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_dir_t2.exe" > "bin/test_isolated_composed_int_lock2_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_dir_t2.output" 2>&1
+            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+            #      11 [sig] test_isolated_composed_int_lock_def_t2 3660 _cygtls::handle_except ions: Error while dumping state (probably corrupted stack)
+            [ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100  -latm full : : : test_isolated_composed_int_lock2_dir_full_t2_i100 ]
+
+    ;
+    
+    alias failures
+        : 
+            ########### fails
+            # /bin/sh: line 4:  2944 Aborted                 (core dumped) "bin/test_ht_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_ht_def_t2_i1000.exe" > "bin/test_ht_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_ht_def_t2_i1000.output" 2>&1
+            # Rounding max threads to the next multiple of 4 (4).
+            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+            [ run stm : -bench ht -def -threads 2 -inserts 100 -latm full : : : test_ht_def_full_t2_i100 ]
+
+            ########### fails
+            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+            [ run stm : -bench ll -def -threads 2 -inserts 100 -latm full : : : test_ll_def_full_t2_i100 ]
+
+            
+            ########### fails all-modes
+            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+            #   19469 [sig] test_tx_linear_lock_def_t2 3768 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)
+            [ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm full : : : test_tx_linear_lock_def_full_t2_i100 ]
+            
+            ########### fails
+            [ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm tx : : : test_tx_linear_lock_def_tx_t2_i100 ]
+
+            ###########  fails all-modes
+            # /bin/sh: line 4:  3660 Segmentation fault      (core dumped) "bin/test_isolated_composed_int_lock_def_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_t2.exe" > "bin/test_isolated_composed_int_lock_def_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_t2.output" 2>&1
+            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+            [ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm full : : : test_isolated_composed_int_lock_def_full_t2_i100 ]
+            
+            ########### fails
+            # /bin/sh: line 4:  4744 Aborted                 (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tm > "bin/test_isolated_composed_int_lock_def_tm_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_tm_t2_i100.output" 2>&1
+            [ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tm : : : test_isolated_composed_int_lock_def_tm_t2_i100 ]
+
+            ########### fails
+            # /bin/sh: line 4:  4772 Aborted                 (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tx > "bin/test_isolated_composed_int_lock_def_tx_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_tx_t2_i100.output" 2>&1
+            [ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tx : : : test_isolated_composed_int_lock_def_tx_t2_i100 ]
+
+            ###########  fails
+            #/bin/sh: line 4:  4536 Aborted                 (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm full > "bin/test_isolated_composed_int_lock2_def_full_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_def_full_t2_i100.output" 2>&1
+            #====== BEGIN OUTPUT ======
+            #61 i= 0
+            #66 i=0 end= 50 count= 1
+            #70 lock
+            #73	1
+            #74 unlock
+            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+            [ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm full : : : test_isolated_composed_int_lock2_def_full_t2_i100 ]
+
+            ###########  fails
+            #/bin/sh: line 4:  4556 Aborted                 (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm tm > "bin/test_isolated_composed_int_lock2_def_tm_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_def_tm_t2_i100.output" 2>&1
+            #====== BEGIN OUTPUT ======
+            #61 i= 0
+            #66 i=0 end= 50 count= 1
+            #70 lock            
+            [ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm tm : : : test_isolated_composed_int_lock2_def_tm_t2_i100 ]
+
+            ###########  fails
+            [ run stm : -bench isolated_composed_int_lock2 -def -threads 4 -inserts 100 -latm tx : : : test_isolated_composed_int_lock2_def_tx_t4_i100 ]
+
+            ########### fails all-modes
+            # /bin/sh: line 4:  2376 Aborted                 (core dumped) "bin/test_using_linkedlist_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_def_t2_i1000.exe" > "bin/test_using_linkedlist_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_def_t2_i1000.output" 2>&1
+            [ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm full : : : test_using_linkedlist_def_full_t2_i100 ]
+            
+            ########### fails
+            [ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm tm : : : test_using_linkedlist_def_tm_t2_i100 ]
+
+            ########### fails
+            [ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm tx : : : test_using_linkedlist_def_tx_t2_i100 ]
+            
+            ########### fails all-modes
+            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+            [ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm full : : : test_hashmap_w_locks_def_full_t2_i100 ]
+            ########### fails
+            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+            [ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm tm : : : test_hashmap_w_locks_def_tm_t2_i100 ]
+            ########### fails
+            [ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm tx : : : test_hashmap_w_locks_def_tx_t2_i100 ]
+            
+            ########### fails
+            # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+            [ run stm : -bench list_hash_w_locks -def -threads 2 -inserts 100 -latm full : : : test_list_hash_w_locks_def_full_t2_i100 ]
+
+            ########### fails
+            #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+            [ run stm : -bench list_hash_w_locks -def -threads 4 -inserts 100 -latm tm : : : test_list_hash_w_locks_def_tm_t4_i100 ]
+
+            ########### fails 
+            [ run stm : -bench tx_linear_lock -dir -threads 2 -inserts 100 -latm tm : : : test_tx_linear_lock_dir_tm_t2_i100 ]
+
+            ########### fails 
+            [ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100  -latm tm : : : test_isolated_composed_int_lock2_dir_tm_t2_i100 ]
+
+            ########### fails 
+            [ run stm : -bench isolated_composed_int_lock2 -dir -threads 4 -inserts 100  -latm tx : : : test_isolated_composed_int_lock2_dir_tx_t4_i100 ]
+
+            ########### fails all-modes
+            #/bin/sh: line 4:   408 Aborted                 (core dumped) "bin/test_using_linkedlist_dir_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_dir_t2_i1000.exe" > "bin/test_using_linkedlist_dir_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_dir_t2_i1000.output" 2>&1
+            [ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm full : : : test_using_linkedlist_dir_full_t2_i100 ]
+            ########### fails
+            [ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm tm : : : test_using_linkedlist_dir_tm_t2_i100 ]
+            ########### fails
+            [ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm tx : : : test_using_linkedlist_dir_tx_t2_i100 ]
+
+            ########### fails
+            #[ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm tm : : : test_tx_linear_lock_def_tm_t2_i100 ]
+
+    ;
+
     alias all
-        : def dir examples
+        : def dir examples fails_sometimes
     ;