Commit graph

3758 commits

Author SHA1 Message Date
319da4bff6 WIP: improve the API 2013-10-18 01:10:03 +02:00
f93c7f8930 WIP: draft internal structure of dependency factory 2013-10-16 04:46:20 +02:00
567ab3819b WIP: draft an improved version of the Singleton factory
...this would both improve our general design and circumvent
the problems with Clang and static variables
2013-10-14 01:18:56 +02:00
843d75ac2a test.sh: double VSize limits to prevent frequent test suite failure
especially the DiagnosticContext_test seemst to hit the
previously set limits regularily, which is somewhat strange
2013-10-13 02:50:04 +02:00
08cae2617d fix insideous problem with mutex initialisation
explanation: we use pthread_once to define a mutex type descriptor,
used to define some of our mutexes as recursive mutexes. Now,
pthread_once relies on a counter stored in a given location;
we used a non-exported global var for this counter.

Unfortunately this ties the mutex initialisation to the static
initialisation of the compilation unit holding this counter variable.
Theoretically it would be possible (we never observed such an incident)
that, during static initialisation, a singleton was brought up,
which requires a class-scoped lock, implemented as recursive mutex.
And it would be possible for this singleton locking to happen prior
to initialisation of the mentioned counter variable.

As a fix, I've moved the counter varialbe into a function scoped
static variable, since that is guaranteed by the C++ runtime system
to be initialised at first usage of the function, irrespective of the
initialisation order of the enclosing compilation units
2013-10-13 01:48:27 +02:00
2b437b49ad DOC: switch on TOC and footnotes on some pages 2013-10-07 04:41:19 +02:00
d9141931a9 investigation of a problem with Clang
posted also to Stackoverflow. http://stackoverflow.com/questions/19212474/clang-links-to-different-locations-when-referring-a-templated-static-variable-fr
2013-10-07 02:03:14 +02:00
67523269fc clean-up and comments for the singleton factory 2013-10-07 01:58:13 +02:00
66b62e2146 remove superfluous template parameter dependency 2013-10-07 01:58:13 +02:00
48431d822d Build: adjust versions and naming to comply with Debian/Jessie
Note: this drops some backwards compatibility. We're targeting now
roughly the range between Ubuntu-Precise (LTS) and Debian/testing,
with Debian/stable as the reference system.

The naming scheme for Boost-Libraries was adjusted with Boost-1.42
for Unix-Platforms. Now the '-mt' suffix isn't included any more, but
the libraries available through the usual packaging mechanisms can be
assumed to be thread safe.

See also http://issues.lumiera.org/ticket/759
2013-10-07 01:52:57 +02:00
cdb3d3045a BUG: Clang shows a problem when accessing templated static variable through separate compilation units
this is really creepy: the same(!) instance of the singleton factory
sees different addresses of the class static variable, depending on
the compilation unit.

Please note that the type of the concrete factory function is *erased*
when exiting the constructor function of ConfigurableHolder
2013-10-06 23:17:18 +02:00
4bd9eeb8ee bughunt: re-create the whole 2nd layer with a configurable product type --> HIT
Now we've reprduced the problematic situation in isolation
2013-10-06 23:17:18 +02:00
675b2070ce bughunt: attempt to rebuild the problematic structure stand-alone... --> MISS
this is only a stripped-down version of the basic singleton, without
the indirection. Unsurprisingly, this doesn't exhibit the problem yet
2013-10-06 23:17:18 +02:00
0e8a1f1e08 bughunt: use a single SingletonSub instance in two compilation units --> HIT
basically this reproduces the problem in a simplified setup.
Especially note that we're going through a single instance of the factory,
yet still this single instance 'sees' two different locations of the
class static variable
2013-10-06 23:17:18 +02:00
72bd94e141 bughunt: replace the ConfigResolver with a direct instantiation of Singleton -> MISS
thus not lib::Singleton is the culprit, it must be lib::SingletonSubclass
2013-10-06 23:17:18 +02:00
10a511d29c bughunt: build testcase statically linked
...but still dynamically linking against the core lib
But the actual template instantiations happen now within the two
compilation units, which are linked statically.

When looking into the symbol table, we can see that the static
field is emitted two times

readelf -W target/clang-static-init -s | c++filt |less
2013-10-06 23:17:18 +02:00
cec78fdc58 bughunt: extract a call sequence leading to a strange init error with Clang
Observations:
 - the initial observation was that we get two instances of the config rules service
 - obviously this it is *not* the initialisation of a static variable accessed from
    multiple compilation units. But the access from two compilation units is crucial
 - we can exclude the effect of all other initialisation. It *is* in SingletonSubclass
 - we can exclude the effect of dynamic linking. Even two translation units
    linked statically exhibit the same problem

rebuild this test case in the research area, to be able to verify with various compilers
2013-10-06 23:17:18 +02:00
6d064cb7b7 Clang(#928): clarify instantiation of dependent template
clang-3.2 requires a clarification here (while previous versions
of clang and GCC automatically resolved the ambiguity by assuming
use of a nested, dependent template).
2013-10-06 23:15:49 +02:00
f136220131 Clang(#928): fix re-entrance error in testcode
Clang seems to evaluate the terms of a function call in another order
than GCC -- this uncovered re-entrance errors in some metaprogramming tests,
where we re-used a global formatter object in recursive instantiations.
2013-09-28 01:16:22 +02:00
961936ce9d Clang-3.0(#932): workaround for a known problem of Clang-3.0 (Debian/stable)
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20121203/069267.html

http://stackoverflow.com/questions/13521163/variadic-template-as-template-parameter-deduction-works-with-gcc-but-not-with-c

Clang aborts the template type deduction due to different size of the argument lists;
in fact the missmatching arguments can be filled in perfectly from the default template arguments.

As a workaround, we'll include an unused placeholder type parameter into the templated function,
to make the match succeed.
2013-09-27 23:28:29 +02:00
cb80d4001a Clang(#928): refactor OutputSlot implementation to resolve a scoping problem
Clang is more insistent when it comes to enforcing 'protected' visibility.
Since in this case the basic design can be considered sane and optimal, the
only (and obvious) solution is to nest the PIMPL into a default base class
for implementation; this mirrors the structure of the interface.
2013-09-27 23:25:51 +02:00
4ea20f0e74 Clang(#928): fix inconsistencies and compilation problems
Compilation with Clang 3.0 (which is available in Debian/stable) fails,
mostly due to some scoping and naming inconsistencies which weren't detected
by GCC. At some instances, Clang seems to have problems to figure out a
perfectly valid type definition; these can be resolved by more explicit
typing (which is preferrable anyway)
2013-09-27 23:23:13 +02:00
4f698f1bbb RFC: rework the SchedulerRequirements, promote to draft state
including some consequences taken from last developer meeting
2013-09-20 01:05:34 +02:00
d7b3445f62 DOC: update meeting and IRC transcript overview pages 2013-09-16 04:03:42 +02:00
b91b964d21 DOC: 9/2013 meeting sumary and IRC transcript 2013-09-16 04:03:15 +02:00
7f68bc9020 integrate priority queue: lumiera namespace prefix; unit test pass 2013-09-13 05:44:58 +02:00
fc3cc1bc98 integrate priority queue: adjust imports and doxygen comments 2013-09-13 04:18:16 +02:00
87a84a931f Import priority queue implementation from Cehteh's library 2013-09-13 03:28:50 +02:00
Christian Thaeter
df749271d0 cleanup in the priqueue test-code 2013-09-13 02:57:26 +02:00
Christian Thaeter
ff51ea54e6 Add a copy function to the priqueue
by providing a custom copy function one can adjust otherwise non-copyable
elements. This should be used cautionary because dereferencing elements may
poison the cache and thus have some considerable performance impact
(profile this)
2013-09-13 02:57:26 +02:00
Christian Thaeter
98d6ba3967 priqueue implementation
this adds a minimalistic priority queue based on a binary heap
2013-09-13 02:57:26 +02:00
Christian Thaeter
76b2d2e5e0 Collection of a lot library worthy sources, many extracted from lumiera 2013-09-13 02:55:47 +02:00
93226715a4 small tweaks to the doxygen config 2013-09-12 22:30:27 +02:00
00ce775a84 rework and clarify the SchedulerRequirements RfC 2013-09-10 02:19:16 +02:00
d9690aa485 rework and polish the Documentation Structure RfC 2013-09-09 02:52:35 +02:00
bcfc1ed783 some bits to round up the job descriptor API 2013-09-08 19:19:02 +02:00
2b8ac2d071 render job dummy passes unit test
the basic job and job closure interface is mostly settled now.
We can define and invoke render jobs, and distinguish jobs
through a hash ID
2013-09-07 02:37:17 +02:00
7ba10619aa draft unit test to cover the basic render job properties 2013-09-02 00:57:33 +02:00
ef535d9897 provide a dummy job for unit testing 2013-09-02 00:26:04 +02:00
7ba0ef92c8 stubs to complete the scheduler interface draft 2013-09-01 23:29:57 +02:00
3688cbe9a5 WIP: draft scheduler interface and diagnostics 2013-09-01 19:48:17 +02:00
bcbd05d7eb reorganise some boost::format usage
using our util::_Fmt front-end helps to reduce the code size,
since all usages rely on a single inclusion of boost::format

including boost::format via header can cause quite some code bloat


NOTE: partial solution, still some further includes to reorganise
2013-09-01 17:36:05 +02:00
febce1282c standard hash value for jobs (prerequisite for #786)
this is mostly a diagnostic facility; the actual scheduling
of jobs doesn't rely on hash values.
2013-09-01 02:30:14 +02:00
bb0b4578ec move job planning implementation to separate compilation unit 2013-09-01 02:26:46 +02:00
3932a820a3 Job and JobClosure now located in the backend
- adjust namespaces
- fix imports
- forward the failure reason to the JobClosure implementation
2013-08-30 02:00:35 +02:00
488efdf783 WIP: relocate job descriptor into backend (Ticket #926) 2013-08-30 01:23:07 +02:00
c46883d4a8 RFC: Scheduler Requirements
initial draft of an RfC to discuss and define the
requirements for other parts of the application to relie on

note: this commit fixes a merge error; the RfC was lost
while combining documentation and code branches
2013-08-24 15:53:50 +01:00
79370ad494 FrOSCon: review of job and job definition 2013-08-24 15:53:05 +01:00
5cbc152833 before FrOSCon 2013: recent coding work and documentation improvements 2013-08-20 04:42:57 +02:00
3d03c19e04 combine recent documentation improvements done by Benny and Hendrik
resolved some edit conflicts in doc/user/intro/intro.txt
2013-08-20 04:35:32 +02:00