Changes have been pushed for the repository "fawkes.git".
(Fawkes Robotics Software Framework)

Clone:  g...@git.fawkesrobotics.org:fawkes.git
Gitweb: http://git.fawkesrobotics.org/fawkes.git
Trac:   http://trac.fawkesrobotics.org

The branch, timn/thread-manager-finalize-fix has been created
        at  700de51c6edd9b48924c889a24b5934c44f3c6b9 (commit)

http://git.fawkesrobotics.org/fawkes.git/timn/thread-manager-finalize-fix

- *Log* ---------------------------------------------------------------
commit 700de51c6edd9b48924c889a24b5934c44f3c6b9
Author:     Tim Niemueller <niemuel...@kbsg.rwth-aachen.de>
AuthorDate: Fri Mar 30 16:29:50 2018 +0200
Commit:     Tim Niemueller <niemuel...@kbsg.rwth-aachen.de>
CommitDate: Fri Mar 30 16:29:50 2018 +0200

    libbaseapp: thread manager call finalize before aspect finalization
    
    When removing a single thread via the ThreadCollector in the
    ThreadProducerAspect, that very thread's finalize() was called after the
    aspects had already been finalized. This can (and most likely will) lead
    to segfaults, e.g., when trying to close a blackboard interface. fvbase
    was indeed suffering from this problem.
    
    This is similar to the fix for thread lists (e71b76e3 from 2013).

http://git.fawkesrobotics.org/fawkes.git/commit/700de51
http://trac.fawkesrobotics.org/changeset/700de51

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


- *Summary* -----------------------------------------------------------


- *Diffs* -------------------------------------------------------------

- *commit* 700de51c6edd9b48924c889a24b5934c44f3c6b9 - - - - - - - - - -
Author:  Tim Niemueller <niemuel...@kbsg.rwth-aachen.de>
Date:    Fri Mar 30 16:29:50 2018 +0200
Subject: libbaseapp: thread manager call finalize before aspect finalization

 src/libs/baseapp/thread_manager.cpp |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

_Diff for modified files_:
diff --git a/src/libs/baseapp/thread_manager.cpp 
b/src/libs/baseapp/thread_manager.cpp
index 45630a5..1db101b 100644
--- a/src/libs/baseapp/thread_manager.cpp
+++ b/src/libs/baseapp/thread_manager.cpp
@@ -461,8 +461,8 @@ ThreadManager::remove_maybelocked(Thread *thread, bool lock)
 
   thread->cancel();
   thread->join();
-  __finalizer->finalize(thread);
   thread->finalize();
+  __finalizer->finalize(thread);
 
   internal_remove_thread(thread);
 }
@@ -545,8 +545,8 @@ ThreadManager::force_remove(fawkes::Thread *thread)
 
   thread->cancel();
   thread->join();
-  if (__finalizer) __finalizer->finalize(thread);
   thread->finalize();
+  if (__finalizer) __finalizer->finalize(thread);
 
   internal_remove_thread(thread);
 }




-- 
Fawkes Robotics Framework                 http://www.fawkesrobotics.org
_______________________________________________
fawkes-commits mailing list
fawkes-commits@lists.kbsg.rwth-aachen.de
https://lists.kbsg.rwth-aachen.de/listinfo/fawkes-commits

Reply via email to