lumiera_documentation/src/lib
Ichthyostega 3c3d31dd40 Library: ensure thread-ID is initialised at thread start
While testing, I repeatedly had SEGFAULT in the new thread-wrapper,
but only when running under debugger. While the language spec guarantees
that exit from the thread handle initialisation synchronizes-with
the start of the new thread, there is no guarantee in the reverse
direction. Here this means that the new thread may not see the
newly initialised thread handle ID at start. Thus I've added
a yield-wait at the very beginning of the new thread function.

Under normal conditions, the startup of a thread takes at least
100 - 500µs and thus I've never seen the problematic behaviour
without debugger. However, adding a yield-wait loop at that point
seems harmless (it typically checks back every 400ns or so).

All real usages of the thread wrapper in the application use
some kind of additional coordination or even a sync barrier
to ensure the thread can pick up all further data before
going into active work.

WARNING: if someone would detach() the thread immediately after
creating it, then this added condition would cause the starting
thread function to hang forever. In our current setup for the
thread wrapper, this is not possible, since the thread handle
is embedded into protected code. The earliest point you could
do that would be in the handle_begin_thread(), which is called
from the thread itself *after* the new check. And moreover,
this would require to write a new variation of the Policy.
2023-11-07 16:22:29 +01:00
..
diff Library/Application: switch BusTerm_test 2023-10-05 03:21:51 +02:00
idi Scheduler: implement automatic clean-up of outdated entries 2023-11-03 01:17:10 +01:00
meta Scheduler: rectify λ-post API 2023-10-23 01:48:46 +02:00
test Scheduler: simplify usage of microbenchmark helper 2023-10-30 20:17:16 +01:00
time Scheduler: access invocation time for test 2023-10-25 23:40:47 +02:00
access-casted-o.hpp phase out the (now obsoleted) old Variant and AccessCasted implementation 2015-04-28 04:49:08 +02:00
access-casted.hpp TICKET 141: now we've full coverage, both for Variant and AccessCasted 2015-04-26 05:55:54 +02:00
allocation-cluster.cpp Library/Application: consolidate Monitor API and usage 2023-10-15 20:42:55 +02:00
allocation-cluster.hpp Library: allow to reverse intrusive single linked list 2023-04-20 18:53:17 +02:00
allocator-handle.hpp Dispatcher-Pipeline: resolve further problems with re-entrant allocation 2023-06-12 17:21:41 +02:00
builder-qualifier-support.hpp ElementBox: extract builder qualifier support as library implementation 2022-08-28 23:36:27 +02:00
call-queue.hpp Library/Application: consolidate Monitor API and usage 2023-10-15 20:42:55 +02:00
cmdline.cpp Dependencies: get rid of boost-regexp (see #995) 2019-06-24 02:41:02 +02:00
cmdline.hpp Dependencies: get rid of boost-regexp (see #995) 2019-06-24 02:41:02 +02:00
del-stash.hpp reduce include dependencies of DelStash 2018-04-01 00:37:58 +02:00
depend-inject.hpp Project: update and clean-up Doxygen configuration 2021-01-24 19:35:45 +01:00
depend.hpp FailureHandling: improved ZombieCheck 2018-10-01 05:51:21 +02:00
diagnostic-context.hpp C++17: some related clean-up 2020-02-21 23:55:09 +01:00
DIR_INFO Lumiera renaming -- build system 2008-03-10 05:07:21 +01:00
element-tracker.hpp maximum munch 2016-12-23 04:23:03 +01:00
error-exception.cpp Library: discontinue setting error flag from Exceptions (see #1341) 2023-10-01 20:11:45 +02:00
error-state.c re-arrange tests according to layer structure 2013-01-07 05:43:01 +01:00
error.h Modernise Lumiera Error baseclass 2018-04-01 23:45:00 +02:00
error.hpp Library: discontinue setting error flag from Exceptions (see #1341) 2023-10-01 20:11:45 +02:00
format-cout.hpp DOC: fix syntax of some doxygen links 2018-09-21 14:33:12 +02:00
format-obj.cpp Lib: fix a bug with diagnostic output 2022-09-27 01:51:21 +02:00
format-obj.hpp Scheduler: rectify λ-post API 2023-10-23 01:48:46 +02:00
format-string.cpp Job-Planning: switch to processing references 2023-05-23 01:08:05 +02:00
format-string.hpp Job-Planning: switch to processing references 2023-05-23 01:08:05 +02:00
format-util.hpp Library: reconsider join / stringify API 2023-09-29 17:00:13 +02:00
frameid.hpp Global-Layer-Renaming: adapt lots of documentation 2018-11-15 21:13:52 +01:00
handle.hpp Dispatcher-Pipeline: draft builder-API 2023-06-02 05:32:15 +02:00
hash-fnv.c Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
hash-fnv.h Doxygen Fixes (#1062) 2017-04-02 04:22:51 +02:00
hash-indexed.hpp DOC: eliminate spurious mentions of tr1:: 2018-01-12 03:03:25 +01:00
hash-standard.hpp Job-Planning: investigate invocation of jobs 2023-04-30 02:18:56 +02:00
hash-value.h reorganise some boost::format usage 2013-09-01 17:36:05 +02:00
ios-savepoint.hpp Lib: fix a bug with diagnostic output 2022-09-27 01:51:21 +02:00
iter-adapter-ptr-deref.hpp Block-Flow: investigate proper working of on-demand allocation 2023-07-12 19:19:41 +02:00
iter-adapter-stl.hpp Library: adjust and fix semantics of nested 'value_type' binding 2023-05-23 01:07:53 +02:00
iter-adapter.hpp Block-Flow: allow optionally to supply sanity checks 2023-07-13 16:46:43 +02:00
iter-chain-search.hpp Activity-Lang: investigate ways to verify invocation sequences 2023-08-13 20:49:30 +02:00
iter-cursor.hpp Library: adjust and fix semantics of nested 'value_type' binding 2023-05-23 01:07:53 +02:00
iter-explorer.hpp Library: add a simple usage for clarity 2023-09-29 18:45:47 +02:00
iter-source.hpp Library: adjust and fix semantics of nested 'value_type' binding 2023-05-23 01:07:53 +02:00
iter-stack.hpp TreeExplorer: helper function so support ChainSearch::clearFilter() 2018-09-14 21:06:15 +02:00
itertools.hpp Job-Planning: switch to processing references 2023-05-23 01:08:05 +02:00
lifecycle.cpp Switch basic Application initialisation to the rewritten DependencyFactory 2018-04-02 02:56:08 +02:00
lifecycleregistry.hpp Library: replace boost::noncopyable by our own library solution 2018-03-24 05:35:13 +01:00
linked-elements.hpp Library: allow to reverse intrusive single linked list 2023-04-20 18:53:17 +02:00
llist.h Doxygen Fixes (#1062) 2017-04-02 04:22:51 +02:00
lockerror.c MERGE Doxygen clean-up done during the last months 2017-04-01 23:59:00 +02:00
lockerror.h Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
luid.c Job-Planning: provide stub implementation for NOP job (see #1296) 2023-05-01 01:48:36 +02:00
luid.h Job-Planning: provide stub implementation for NOP job (see #1296) 2023-05-01 01:48:36 +02:00
multifact.hpp C++17: some related clean-up 2020-02-21 23:55:09 +01:00
mutex.c GPL header whitespace 2010-12-17 23:28:49 +01:00
mutex.h clean-up: sourcefile layout and spell checking 2014-10-23 23:04:35 +02:00
nobug-init.cpp Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
nobug-init.hpp GPL header whitespace 2010-12-17 23:28:49 +01:00
nobug-resource-handle-context.hpp Library: replace boost::noncopyable by our own library solution 2018-03-24 05:35:13 +01:00
nocopy.hpp DI: rework dependency-injection configuration in terms of the new DependencyFactory 2018-03-30 05:56:53 +02:00
null-value.hpp QA: check for possible misalignment through placement new (-> #1204) 2019-11-08 01:14:36 +01:00
opaque-holder.hpp Clip-Drag: switch implementation to the new observer/adapter 2021-05-13 16:14:11 +02:00
optional-ref.hpp Modernise Unknown Exception handler and Exception messages 2018-04-02 01:48:51 +02:00
p.hpp GCC-5 compatibility: remove the last remaining auto_ptrs 2017-05-01 21:43:10 +02:00
path-array.hpp QA: check for possible misalignment through placement new (-> #1204) 2019-11-08 01:14:36 +01:00
polymorphic-value.hpp QA: check for possible misalignment through placement new (-> #1204) 2019-11-08 01:14:36 +01:00
ppmpl.h DOC: reorganise the Doxygen configuration and structure 2013-10-25 06:34:38 +02:00
psplay.c Fix some further mentions and links to Cinelerra-CV 2020-12-11 23:48:30 +01:00
psplay.h Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
query-diagnostics.hpp Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
query-text.cpp Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
query-text.hpp refactor defaults-manager to use the reworked query interface 2012-12-22 00:39:23 +01:00
query-util.cpp Dependencies: get rid of boost-regexp (see #995) 2019-06-24 02:41:02 +02:00
query-util.hpp Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
rational.hpp Timeline: define better internal zoom-out limit 2022-12-10 04:26:22 +01:00
recmutex.c GPL header whitespace 2010-12-17 23:28:49 +01:00
recmutex.h clean-up: sourcefile layout and spell checking 2014-10-23 23:04:35 +02:00
ref-array-impl.hpp pre-C++17: remove remaining old-style (dynamic) exception specifications 2018-04-26 12:07:08 +02:00
ref-array.hpp Library: replace boost::noncopyable by our own library solution 2018-03-24 05:35:13 +01:00
replaceable-item.hpp QA: check for possible misalignment through placement new (-> #1204) 2019-11-08 01:14:36 +01:00
result.hpp Library: verify thread self-recognition 2023-09-30 00:10:09 +02:00
safeclib.c Library/Application: complete technology switch (closes #1279) 2023-10-16 01:44:04 +02:00
safeclib.h Fix some further mentions and links to Cinelerra-CV 2020-12-11 23:48:30 +01:00
scoped-collection.hpp Library/Application: switch Microbenchmark + SyncBarrier tests 2023-10-03 22:56:09 +02:00
scoped-holder-transfer.hpp QA: check for possible misalignment through placement new (-> #1204) 2019-11-08 01:14:36 +01:00
scoped-holder.hpp GCC-5 compatibility: remove the last remaining auto_ptrs 2017-05-01 21:43:10 +02:00
scoped-ptrvect.hpp Global-Layer-Renaming: adjust namespace qualification 2018-11-15 23:59:23 +01:00
searchpath.cpp Dependencies: get rid of boost-regexp (see #995) 2019-06-24 02:41:02 +02:00
searchpath.hpp Dependencies: get rid of boost-regexp (see #995) 2019-06-24 02:41:02 +02:00
sectionlock.h Clean-up: problematic function signature 2020-02-16 02:05:42 +01:00
simple-allocator.hpp QA: check for possible misalignment through placement new (-> #1204) 2019-11-08 01:14:36 +01:00
split-splice.hpp Job-Planning: verify and complete the build-up of mock structures (see #1294) 2023-05-24 03:38:12 +02:00
sub-id.hpp Commands: establish location for defining commands 2017-03-17 21:07:12 +01:00
symbol-impl.cpp Project: update and clean-up Doxygen configuration 2021-01-24 19:35:45 +01:00
symbol-table.hpp Library/Application: consolidate Monitor API and usage 2023-10-15 20:42:55 +02:00
symbol.hpp Global-Layer-Renaming: adapt lots of documentation 2018-11-15 21:13:52 +01:00
sync-barrier.hpp Library: investigate Mutex+Condition-Var for comparison 2023-09-24 21:52:38 +02:00
sync-classlock.hpp Library/Application: consolidate Monitor implementation 2023-10-15 02:41:41 +02:00
sync.hpp Library/Application: complete technology switch (closes #1279) 2023-10-16 01:44:04 +02:00
thread.cpp Library/Application: switch WorkForce 2023-10-12 22:00:55 +02:00
thread.hpp Library: ensure thread-ID is initialised at thread start 2023-11-07 16:22:29 +01:00
time.h Library: rectify confusingly named function on the Grid API 2022-12-05 01:05:23 +01:00
tmpbuf.c Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
tmpbuf.h Doxygen: fill in missing file level headlines for the Library 2016-11-08 13:18:05 +01:00
typed-allocation-manager.hpp QA: check for possible misalignment through placement new (-> #1204) 2019-11-08 01:14:36 +01:00
typed-counter.hpp Library/Application: consolidate Monitor API and usage 2023-10-15 20:42:55 +02:00
unique-malloc-owner.hpp reorganisation(#985): move basic typeString implementation into lib::meta 2016-01-05 23:34:53 +01:00
util-coll.hpp Library: integrate generic min/max function 2020-03-08 02:05:39 +01:00
util-foreach.hpp metaprogramming: switch util-foreach to variadic templates (#967) 2017-08-11 20:35:53 +02:00
util-quant.hpp Timeline: safely calculate sum/difference of large fractional times 2022-12-01 23:23:50 +01:00
util-tuple.hpp Library: extract helper for unloading a sequence into a tuple 2023-05-10 14:49:51 +02:00
util.cpp Util: use case-insensitive matching for parsing bool values 2021-08-20 14:33:59 +02:00
util.hpp Scheduler: allow to manipulate nominal full capacity 2023-11-07 16:12:56 +01:00
variant-o.hpp Library: replace boost::noncopyable by our own library solution 2018-03-24 05:35:13 +01:00
variant.hpp Project: update and clean-up Doxygen configuration 2021-01-24 19:35:45 +01:00
vcall.h GPL header whitespace 2010-12-17 23:28:49 +01:00
verb-token.hpp Library: complete test coverage of VerbPack 2019-06-11 02:40:20 +02:00
verb-visitor.hpp Project: update and clean-up Doxygen configuration 2021-01-24 19:35:45 +01:00
visitor-dispatcher.hpp MERGE Doxygen clean-up done during the last months 2017-04-01 23:59:00 +02:00
visitor-policies.hpp clean up lib/meta namespaces 2011-12-03 03:15:59 +01:00
visitor.hpp Global-Layer-Renaming: adapt lots of documentation 2018-11-15 21:13:52 +01:00
wrapper.hpp Activity-Lang: ability to hook in a fake implementation 2023-09-01 21:59:25 +02:00
wrapperptr.hpp Global-Layer-Renaming: adjust namespace qualification 2018-11-15 23:59:23 +01:00
zombie-check.hpp FailureHandling: improved ZombieCheck 2018-10-01 05:51:21 +02:00