From 74fa340080875bc7a645b4c09faf74fb1bd2242d Mon Sep 17 00:00:00 2001 From: Christian Thaeter Date: Fri, 29 Jan 2010 08:19:14 +0100 Subject: [PATCH] This is release 201001.3 --- ChangeLog | 234 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ NEWS | 13 ++++ README | 55 +++++++------- configure.ac | 2 +- 4 files changed, 274 insertions(+), 30 deletions(-) diff --git a/ChangeLog b/ChangeLog index 46a032a..358ab60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,237 @@ + +2010-01-29 08:11:55 +0100 e201cdd +Christian Thaeter + +Fix Makefile, release-tagging + + + M Makefile.am + + +2010-01-29 07:14:38 +0100 bfc406f +Christian Thaeter + +use a VERSION file to track the version + + + A VERSION + M admin/get_version.sh + M admin/update_version.sh + + +2010-01-29 07:02:36 +0100 c068bb5 +Christian Thaeter + +Add a lot release maintenance targets to the Makefile.am + + + M Makefile.am + + +2010-01-29 05:40:35 +0100 5b9e416 +Christian Thaeter + +script to query the current version from the configure.ac + + + A admin/get_version.sh + + +2010-01-29 05:39:56 +0100 984c303 +Christian Thaeter + +add library versioning + +starting at 1:0:0 because all older releases didn't used versioning and +where installed as .0 versions. + + M Makefile.am + + +2010-01-29 04:52:45 +0100 88c58a2 +Christian Thaeter + +Add a small script for bumping the version number + + + A admin/update_version.sh + + +2010-01-29 04:38:59 +0100 286a26e +Christian Thaeter + +update copyright headers again + +Just testing how the git-analyze-copyright works + + M src/nobug.c + M src/nobug.h + M src/nobug_env.c + M src/nobug_rbdump.c + M tests/Makefile.am + M tests/test.sh + + +2010-01-29 02:31:23 +0100 a26ab62 +Christian Thaeter + +Enable resource logging in BETA builds + +.. but leave the resourcetracker ALPHA only. This is a prerequisite for +a long time goal to have an application which processes logfiles offline +and does there resourcetracking there. + + M doc/resourcetracking.txt + M src/nobug.h + + +2010-01-29 00:35:24 +0100 57c8408 +Christian Thaeter + +add a NIL context for passing boring contexts + + + M src/nobug.h + + +2010-01-29 00:28:21 +0100 c4b28ac +Christian Thaeter + +Add a 'guard' size parameter to ringbuffer construction, remove hardcoded + +The size of ringbuffer wraparound pages at each end of the data was +hardcoded to 1 page. This remove this restriction and lets one pass +explicit sizes for this areas. + +This also adds a (guard=N) option parsed from the NOBUG_LOG env var. + + M src/nobug.c + M src/nobug.h + M src/nobug_env.c + M src/nobug_rbdump.c + M src/nobug_ringbuffer.c + + +2010-01-28 08:30:16 +0100 6cb6f58 +Christian Thaeter + +use multiline logging for resource_dump() and resource_list() + + + M src/nobug.c + M src/nobug.h + M src/nobug_resources.c + + +2010-01-28 07:45:32 +0100 d5b87ad +Christian Thaeter + +Refactor logging core into multiple functions, support multi-line logging + +log messages can now contain newline characters '\n' to break lines. +Each such new line will emit a new logging line with the same header +(same logging event number). + +This multiline logging is atomic and will not be mixed with other log +output. + +The logging callback function is called for each emited line, while the +postlogging callback is still only called once after the output. + + M src/nobug.c + M tests/10singlethreading_alpha.tests + M tests/10singlethreading_beta.tests + M tests/10singlethreading_release.tests + M tests/20multithreading_alpha.tests + M tests/example.c + + +2010-01-28 07:16:57 +0100 61c5446 +Christian Thaeter + +formatting fix for init_flag + + + M src/nobug_env.c + + +2010-01-28 06:58:54 +0100 082e9d1 +Christian Thaeter + +ringbuffer_extend() for adding extra space to the last added entry + + + M src/nobug.h + M src/nobug_ringbuffer.c + + +2010-01-28 06:52:48 +0100 f0870d1 +Christian Thaeter + +Ringbuffer internal doc + + + M src/nobug_ringbuffer.c + + +2010-01-28 06:50:28 +0100 6a69d9f +Christian Thaeter + +Some small doc fixes reflecting recent new features + + + M doc/buildinstall.txt + M doc/overview.txt + M doc/using.txt + + +2010-01-25 08:52:07 +0100 cf7221f +Christian Thaeter + +Update copyright headers according to git blame output + +processed with http://git.pipapo.org/git-analyze-copyright +Peter Simons told me that he doesnt claim copyright of his contributions + + M configure.ac + M src/llist.h + M src/nobug.h + M src/nobug_env.c + M src/nobug_rbdump.c + M src/nobug_resources.c + M src/nobug_ringbuffer.c + M src/nobug_thread.c + M tests/Makefile.am + M tests/test.h + M tests/test.sh + + +2010-01-25 08:33:31 +0100 5e498e8 +Christian Thaeter + +updated NEWS file from all previous release announcements + + + M NEWS + + +2010-01-25 08:32:38 +0100 3e15b86 +Christian Thaeter + +add .mailmap for git commit/author normalization + + + A .mailmap + + +2010-01-23 16:58:13 +0100 30f7761 +Christian Thaeter + +New README file + + + M README + commit 4bbca354f2253c920fa59a8ec7cfc82a54b426cf Author: Christian Thaeter Date: Fri Sep 4 05:01:45 2009 +0200 diff --git a/NEWS b/NEWS index 0cf22b6..7847d87 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,16 @@ +201001.3 +-------- +29 Jan 2010 + +Refactored the logging core, it now supports multiline logging, log statements +can contain newline characters which will emit to multiple loglines +atomically, resource dumping uses this feature. The nobug libraries are now +properly versioned. Added internal ringbuffer documentation. The ringbuffer +guard pages can now be dynamically configured. Resource logging stays active +in BETA builds in preparation for offline resource tracking. Improved release +targets for make, that means more frequent releases in future. + + 201001.2 -------- 23 Jan 2010 diff --git a/README b/README index 023523f..64e77a9 100644 --- a/README +++ b/README @@ -18,8 +18,6 @@ The following features are provided by NoBug: * Three different check levels: from detailed to final no-overhead * Scope tags: tell whenever a function or loop is considered to be bug free * Precondition, Postcondition and Invariant checks and generic assertions - * Debugger support (actions are only executed while running under a - debugger), currently only valgrind is supported * Data structures can be dumped * Application activities can be logged * Runtime customizable logging via an environment variable @@ -43,7 +41,7 @@ means that code must be called at runtime to benefit from the set up contracts. Whats not tested is likely slipping through the net. Being part of the program itself it is affected by memory corruption, certain kinds of misuse may introduce new bugs (test expressions with -side effectsfor example). +side effects for example). // doc/buildinstall.txt:1 // Building and Installing @@ -53,12 +51,9 @@ Supported Platforms ~~~~~~~~~~~~~~~~~~~ NoBug has been developed on linux, using gcc. It should be possible to port -it to any other POSIX compliant operating system. Most platform -specific things are kept optional, but some things need to be -rewritten for the target platform. Currently Linux with a gcc that conforms to +it to any other POSIX compliant operating system. Platform/compiler +specific things are kept optional. Currently Linux with a gcc that conforms to C99 is supported for both 32 and 64 bit architectures. -One gcc extentsion that is used (token pasting of varadic macros) may prevent -portability to other compilers as some compilers don't support such extensions. [grid="all"] `-------`---------------`---------------`-------------------------------------- @@ -185,18 +180,18 @@ the ALPHA build-level in your application, then your module would assume the following form: - #include "nobug.h" #define EBUG_ALPHA + #include "nobug.h" - -Subsequently you'll have to link the appropriate library to your application. + +Subsequently you'll have to link the appropriate library to your application. A number of different libraries are available to link depending on whether you require to statically or dynamically link, or whether your application is multi or single threaded. The link order is important on your link line. Link the NoBug library 'after' your application's modules. Here's how to statically link, -single-threaded applications: +single-threaded applications: [source,sh] ---------------- @@ -777,7 +772,7 @@ $ NOBUG_LOG=test:TRACE ./a.out 0000000002: TRACE: example.c:11: main: Always on ---- -// src/nobug.c:39 // +// src/nobug.c:38 // Predefined Flags ~~~~~~~~~~~~~~~~ @@ -869,7 +864,7 @@ orthogonal through all macro definitions. `...` printf-like format string followed by its arguments --------------------------------------------------------------------------- -// src/nobug.h:625 // +// src/nobug.h:629 // [[NOBUG_CONTEXT]] Source Contexts ~~~~~~~~~~~~~~~ @@ -882,7 +877,7 @@ NoBug passes information about the source location of a given statement in function name and must be used when the function context is not available like in static initialization etc.. -// src/nobug.h:102 // +// src/nobug.h:104 // Assertions ---------- @@ -956,7 +951,7 @@ otherwise optimized out. TODO: describe how to create invariant checks -// src/nobug.h:359 // +// src/nobug.h:363 // Logging Macros -------------- @@ -1075,7 +1070,7 @@ datastructure to be dumped which may recursively call other dumping functions. There are macros for logging within such a dumper function and for initiating a dump of a given datastructure. -// src/nobug.h:305 // +// src/nobug.h:309 // [[DUMP]] .DUMP DUMP(flag, type, pointer, depth) @@ -1145,7 +1140,7 @@ example() } ------------------------------------------------------- -// src/nobug.h:643 // +// src/nobug.h:649 // Source Annotations ------------------ @@ -1239,7 +1234,7 @@ not allowed. *CHECKED* Preconditions, Postconditions Preconditions ------------------------------------------------------------------------------------------------------ -// src/nobug.h:770 // +// src/nobug.h:776 // Fault injection --------------- @@ -1271,8 +1266,11 @@ Resource Tracking With little effort, NoBug can watch all kinds of resources a program uses. This becomes useful for resources which are distributed over a multithreaded -program. Resource tracking is only active in ALPHA builds and optimized out in -BETA and RELEASE builds. +program. Resource tracking includes logging actions on resource and checking +locking policies over acquired resources. Resource logging is active in ALPHA +and BETA builds when NOBUG_RESOURCE_LOGGING is defined to 1 (the default). +The resource tracker which supervises locking policies is only enabled in +ALPHA builds. Concepts ~~~~~~~~ @@ -1338,16 +1336,15 @@ strict digraph G Notes ~~~~~ -There are small race conditions in the time we -announce/forget/enter/remove resources and doing the actual call to a -resource. These race conditions affect the reporting exactness and are -a design decision. When this poses a problem it will be fixed. +There are small race conditions between logging and checking resource tracking +and the actual call to the resource using function. This is a design decision +there is no way to account for this exactly when the function call may block. The Resource Tracker relies on proper announce/forget and enter/leave are properly pairing. The programmer should ensure that this is done right, otherwise the results are unpredictable. -// src/nobug.h:987 // +// src/nobug.h:993 // Resource tracking macros ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1626,7 +1623,7 @@ and active in ALPHA builds and optimized out on any other build level. For details about the deadlock detection algorithm see xref:deadlock_detection[Appendix: Resource Tracking Alorithm]. -// src/nobug.h:2301 // +// src/nobug.h:2331 // Callbacks --------- @@ -1708,7 +1705,7 @@ IMPORTANT: Errors detected by NoBug are always fatal. If one handles and possibl throws an exception here, the application must shut down as soon as possible. Most causes for aborts are optimitzed out in `RELEASE` builds. -// src/nobug.h:1540 // +// src/nobug.h:1552 // Tool Macros ----------- @@ -1820,7 +1817,7 @@ single global variable. Nobug initializes this variable to `NULL` and then touches it never again. -// src/nobug_rbdump.c:31 // +// src/nobug_rbdump.c:33 // [[rbdump]] Dumping Persistent Ringbuffers ------------------------------ diff --git a/configure.ac b/configure.ac index 6aeae7b..df84924 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([nobug], [201001.2]) +AC_INIT([nobug], [201001.3]) AC_CONFIG_SRCDIR([src/nobug.h]) AC_CONFIG_AUX_DIR([scripts]) AC_CONFIG_MACRO_DIR([m4]) -- 2.11.4.GIT