2 Christian Thaeter (64):
3 Preparation for the upcoming deadlock detector
4 per thread resource stack links all 'resource_user's of one thread
5 guard around LLIST definition
7 new memory pool implementation
8 Learning graphviz, translating the resource state graph to inline dot
9 pipadoc update, new upstream version with macro facility
10 Fixes from lumiera mpool.c
11 generate the manual by pipadoc/asciidoc
12 little pipadoc cleanup, sort index case independenty
13 Documentation beautifying
14 Makefile update, better documentation handling
15 some source highlighting improvements
16 Few more exclusions for nobug messages in test.sh
17 Fix: expect_return for the case no return value was defined in a test
18 added logo, thanks to pablo lizardo for his artwork
20 WIP: preparation for the new deadlock checker, structures init/destroy
21 WIP: entering resources, trying literate programming with pipadoc
22 add shell function awareness to TESTs
23 FIX: TEST_END can not use nobug facilities, since nobug might be shut down
24 add a basic resourcetracker test for low level facilities
25 Add a explicit nobug_destroy() to tear down nobug
26 some pending cleanups and fixes
27 pending changes and stat functions for nobug_resource
28 first cut of nobug_resource_leave()
29 The non-threaded case for resource_leave looks simple
30 FIX: must not proceed checking for deadlocks when no resource is hold
31 remove some pending cruft
32 new resource_state() change implementation
33 Define NOBUG_TAB to be eight spaces by default
35 improve formatting for RESOURCE_LIST and RESOURCE_DUMP
36 cleanup in nobug.h, remove some cruft
37 FIX: tests makefile had a double variable declaration
39 FIX: resourcetracker, error messages
40 FIX: resourcetracker, NULL dereference in finding parents
41 a lot test fixes, whitespaces, new error messages
43 converted the text to paths, less scaling problems
44 Use different mpool chunksizes for 32 vs 64 bit machines
46 some more docs about resourcetracking
47 use gcc's format attribute to validate formatstring at compiletime
48 remove some gnuisms from the Makefile
49 FIX: strict aliasing warning with certain gcc's
50 use '#!/usr/bin/env bash' in test.sh to be little more compatible
51 move pipadoc plugin loading behind plaintext file handling
52 include the VERBATIM pipadoc plugin for literate programming
53 make indexes optional for the asciidoc plugin of pipadoc
54 improve the verbatim pipadoc plugin
55 NOBUG_THREAD_DATA for thread local storage of user data
56 callbacks for logging and aborting
57 include source file and line number comments by asciidoc.pawk
58 FIX: pipapdoc, comment match regex, must match first occation
59 pipadoc: asciidoc support increment/decrement HEAD's
60 pipadoc: asciidoc, add INDEX only entry
61 FIX: pipapoc, asciidoc, track actual head level
62 pipadoc, asciidoc, allow HEAD without headline
63 pipadoc, make index generation optional in HEAD and PARA
65 The big documentation update
69 Christian Thaeter (109):
70 according to POSIX overlapped mmap replaces the old mapping, no need for munmap()
72 add the srcdir to the include directories for building tests
73 ACX_PTHREAD needs LDFLAGS=PTHREAD_CFLAGS
74 add a resource handle init macro
75 add shortname for RESOURCE_HANDLE_INIT
76 add preconditions for resource handling
77 add RESOURCE_ANNOUNCE_RAW and RESOURCE_FORGET_RAW variants
78 add RESOURCE_STATE_RAW for uncooked flags
79 added a pkg-config metadata file for multithreaded nobugmt
80 NOBUG_RESOURCE_HANDLE_COMMA_INITIALIZER
81 shared lib, use libtool
82 add a _RAW version for NOBUG_RESOURCE_LEAVE takeing a direct flag
83 fixes, cosmetics and email correction
84 replace NOBUG_RESOURCE_HANDLE_COMMA_INITIALIZER with more generic COMMA macors
85 NOBUG_ECHO does unconditional logging at LOG_NOTICE level
86 NOBUG_CHECK for assertions which never get optimized out
87 Change the log format!
88 testsuite integration driven by improved test.sh
90 Transition to new testsuite
91 multithreading and resource tracker tests
92 resource tracker, deadlock tests
94 enable resetting of thread ids
95 Logging for CRITICAL and ALERT levels
96 Fault injection macros
97 NOBUG_WHEN and NOBUG_IF_mode macro cleanup
98 Move high level logging before low level macros
99 remove NOBUG_BLOCK and NOBUG_MODE_SWITCH macros, factored to easier code
102 big nobug.h reorganization
103 add a logging baselimit
104 rename global_mutex to logging_mutex, use it directly from the log function remove LOCK macros
105 valgrind support is back
106 add a valgrind suppression generator
107 add valgrind/suppression support to the testsuite
108 Fix: Correct all Failures which where revealed by valgrind
109 new backtrace function for glibc, uses nobugs logging facility
111 Make resource dumping using the logging facilities
112 nobug_init() -> nobug_init(void)
113 make valgrind testing faster again
114 preliminary asciidoced README.txt contributed by Benny Lyons
115 WIP: split README.txt into single files
116 Experimental documentation splitup for review
117 WIP: Transition to new pipadoc
118 little more assertions docs
119 more on manual outline, overview, etc.
120 documentation for the logging macros
121 pipadoced the annotations
122 some minor doc corrections/todos
123 pipadoced the faultinjection macros
124 make the index generation nicer, using labled lists
125 pipadocing the resourcetracker things
126 some cosmetics, formating
128 macros doc formatting
129 some more formating and cosmetics
130 beautified 'using.txt'
131 beautified the 'initialization' chapter, moved the example there
132 minor typos and corrections
133 new, prettier formatting for assertions doc
135 beautified and reviewed the logging doc
137 reorder doc a little, make scopechecks a primary chapter
138 little cosmetics in logmacros
139 basic dumping doc cleanup/integration
140 document LOG_BASELIMIT's
141 move the toolmacros documentation into nobug.h
142 Document the NOBUG_IF_* macros
143 WIP: first try to generate a manpage
144 FIX: make distcheck work again, bump version number for new release
145 add a 'nobug' flag to log nobug actions itself
146 fix LOCATION_INFO_ARGS in BACKTRACE
147 Add another static NOBUG_ANN flag for logging annotations, refine loglevels
148 minor documentation fixes and cosmetics
149 IMPORTANT CHANGE: reverse the parameter order for RESOURCE_STATE
150 fix filename in resource context, pass only basename
151 Improved resource tracker, much stricter checks, alot tests
152 start a test thread in vgsuppression
153 FIX: ups, wrong pthread macro
154 replaced LD_LIBRARY_PATH hack with proper libtool --mode=execute
155 maybe vgsuppression improvement and don't track reachable allocations
156 FIX: oops, the wrong flags changed
157 Fix remaining compiler warnings and make the build picky about it
158 FIX: dump level check was a complete brainfart, should better work now
159 just some test renames, glitch
160 replace NOBUG_ASSERTN_ by NOBUG_RESOURCE_ASSERT
161 make initialization race free
162 fix initialization race (weakly)
163 add NOBUG_DECLARE_ONLY magic
164 define a NOBUG_EXTERN which handles C linkage for C++ programs
165 FIX: __LINE__ expansion was not triggered
166 FIX: dummy initializers must not be static to prevent compiler warning
167 Revert NOBUG_EXTERN, using 'extern "C"' from C++ is simpler
168 remove the line number from C++ initializers, give them a defined name
169 silence warning on ubuntu
170 add NOBUG_FLAG_RAW() hack
171 allow state transitions back to 'waiting', as needed for cond vars
172 new state-string gnerator, prepared for 'shared' state
173 refine RESOURCE_ASSERT messages, fixup for state transition back to waiting
174 add conditional pthread inclusion
175 fix thread id allocation
176 new resource tracker, without deadlock detector so far
177 small documentation fixes
178 guard around LLIST definition
181 resourcemacros formatting.
182 Some more work on resourcemacros.
183 resourcemacros improvments.
186 address C99 usage while not asking for a C99 compiler in configure
187 Make valgrind optional
188 Oops: missing files from the past commit
190 Michael Ploujnikov (1):
191 added a pkg-config metadata file
194 Christian Thaeter (34):
195 add an optional PARENT to log control flags
196 more consistent log formatting, always use ': ' as field delimiter
197 start of a script analyzing debug logs for locking inconsistencies and deadlock causes
199 removed nobuglockalyzer, lock checking will be done in at runtime
200 use a struct to accumulate nobug thread local storage, already with members for lock checking
202 start of lock checker in C
203 deadlock checker basic implementation, not yet integrated
204 deadlock checker, fixed implementation
206 test code for the deadlock checker, not complete
207 meta update for 0.3pre1
209 fixed deadlock detector, report offening other lock now
211 updated documentation, ChangeLog and some cosmetics
212 Merge commit 'mob/master'
213 cleanup checks only in ALPHA build level
214 Directory reorganization
215 Refactored the logging macro to a helper function
216 Add ringbuffer_new/delete() for dynamic ringbuffer allocation
217 add options parser to envvar parsing
218 Add a global event counter
219 Add a hook for application defined logging
220 Slightly relaxed locking/counter updates
221 add the flag to the callback parameters
222 add nobug_log to nobug.h, cleanup
223 fix: test strlen(flag->name) after existence of flag->name has be checked
224 Merge branch 'master' of git://git.pipapo.org/nobug-simeon
225 reindented rbdump, added/removed some code
226 rbdump must include source header
227 changed license to GPLv2 or any later
228 Meta and documentation update for 0.3rc1
231 INSTALL: Updated by automake 1.10.
232 configure.ac, acinclude.m4: Use ACX_PTHREAD to detect thread support.
233 nobug.h: Take advantage of ACX_PTHREAD.
234 nobug_env.c: Initialize nobug_limits[] as array of anonymous structures.
235 nobug_resources.c: Use %lu to snprintf() an unsigned long value.
236 nobug_thread.c: cosmetic fixes
237 nobug.c: Silenced gcc warning about a lost const qualifier in the free() call.
238 nobug_ringbuffer.c: Include <stdlib.h> to define mkstemp().
239 example.c: return 0 to avoid compiler warning.
240 Makefile.am: Added build targets for example program.
241 .gitignore: Ignore example program and other generated files.
242 nobug_resources.c: fixed "unused variable" compiler warning
243 Build all test programs in all variants (and run them at "make check").
247 Added nobug_rbdump - nobug ringbuffer dump (prints the content of a nobug ringbuffer to stdout)
248 Renamed nobug_rbdump.cpp to nobug_rbdump.c
249 Added nobug_rbdump to Makefile.am
250 removed unneded comments
251 Corrected indenting in Makefile.am
254 Christian Thaeter (94):
255 added release target to Makefile.am
257 fix BETA and RELEASE build bug
258 planned feature branch, only added sample code for now
259 use git-whatchanged for ChangeLog, remove Changelog from repository
260 renamed BUG to FIXME, must not exist in BETA builds now
261 using flags in DUMP macros
263 new (standardized) log format
264 test fixes, doc updates (new log format)
265 use autoconfed checks for valgrind and execinfo, makes valgrind optional
266 autotools want a ChangeLog
267 little fix to make nobug barely useable with C++
268 A new DEPRECATED macro, will altert in ALPHA build, quiet in BETA builds and not compile on RELEASE builds
270 a NOBUG_INIT_FLAG_LIMIT(flag, default) which lets the initializing program alter the default log level of a debugging flag
272 Merge commit 'pre0.2' into logbuffer
273 add few more ignoref files
274 ringbuffer implementation, start
275 next/prev accessors, little TODO list
276 for now, O_TRUNC always
277 add load and save function
278 semi-finished ringbuffer
279 renamed nobug.c to nobug_ringbuffer.c
280 use NOBUG_DISABLE_SHORTNAMES to disable short aliases
282 add ringbuffer_pos and ringbuffer_pop
283 move struct ringbuffer to nobug.h, small formatting changes, range fix
284 new env parser for NOBUG_LOG
285 new logging function using ringbuffer and other targets
286 libnobug improvement, initialization etc.
288 default values for logging as planned
289 Ooops, LOG_TRACE should be LOG_DEBUG
290 resource registry, initial version
291 use type and name as resource identifier
292 using a colon as type:name delimiter
293 add _literal functions for using string literals as resource names without copying
294 cleanup and header integration of the resource registry
295 nobug_resource_dump_all prints out all registered resources
296 Resource Registry, macros, renames, finished version so far
298 constrain maxmsg 2 chars less makes the code little smaller
299 Merge commit 'resource_registry_signature'
300 removed the _literal prefix, introduced _name prefix instead, minor cleanups
301 basic support tho store states for client resource records, not very mature yet
302 multithreading support, -lpthread is mandatory now, should be made optional and generating a libnobugmt.a and libnobug.a
303 build 2 library variants now one without threading support, one with threading support
304 Merge commit 'logbuffer_signature'
306 small cleanup and fixes
307 resource registry locking
308 add a 'acquired' state to entered resources
309 removed locking from the dump functions, at error/report time we already have the lock. Needs to be extended for user-api later
310 Release 0.2pre2 metadata/documentation sync
311 fixed bug with braced arguments
312 complete resource tracker simplification
313 add tree parameter to resource_find
314 add RESOURCE_LEAVE_LOOKUP which does not need a handle to the holder
315 add extern "C" for C++ programs
316 simplify and fix default ringbuffer handling
317 add a void* to resource tracker records which are useable as dynamic identifier (type/name have to be static), make name optional for resource records
318 fallback to stderr when console target is not yet set
319 dump list of resources only
320 use only the id (void*) for identifying resources, name, type become optional
321 abstract source location information into a file/line/function tuple
322 add build/ dir to gitignore
323 rename LOCATION macros
324 just __func__ suffices
325 fix DUMP and INVARIANT calls with new LOCATION_ARGS
326 add CPPINIT_FLAG macros to ease flag initialization from C++ programs
327 must call INIT before first TRACE
328 rename CPPINIT to CPP_DEFINE, make it conditionally only available in C++ compilers
329 fixed INIT_FLAG_LIMIT, old version was still around
330 fill NOBUG_LOCATION only in ALPHA and BETA builds and resolve to a empty string in RELEASE builds
331 new resource state handling, WAITING, RECURSIVE and EXCLUSIVE
332 use object_id and a thread_id to identify resources
333 counter should only be initialized to 0 when state == WAITING
334 add resource state diagram
336 improve makefile meta generation, preparation for 0.2rc1 release
337 fix state array access in RESOURCE_LEAVE_LOOKUP
338 fix RESOURCE_LEAVE_LOOKUP to take only 2 parameters
339 waiting for a RECURSIVE resource we already own is a no-op
340 locks are not needed for thread_id_set, they are rather a deadlocking bug
341 add logging by flags to the resource registry, better formatted log messages,
342 cleanup remove disabled gdb stuff
343 meta update for the 0.2rc1 release
345 let the resource tracker log before doing actions
346 making the string members of the resource registry non-const was stupid
351 Christian Thaeter (10):
352 fixes Bugs/LimitIgnored
354 little more precise definition of NOBUG_ON
356 little more precise definition of NOBUG_ON
358 retain old limit in nobug_env_get_flag when initializing flags
359 Doc enhancement: BestPractices. wiki doc got completely reorganized, luckily that isnt seen here.
360 better logging control with NOBUG_LOG, set limits per flag
364 Christian Thaeter (41):
366 first real working revision
369 legal stuff and simple makefile
371 NDEBUG incompatible with -DEBUG_{ALPHA|BETA} #error
372 include "NOBUG:" in LOG output
373 changed logging output from NOBUG to DEBUG, minor formatting changes
375 new FLAG macros for upcoming logging control
376 doc new logging capabilities
377 new logging capabilities
380 DUMP and INVARIANT macro rename
381 corrections/macros renames
382 test rename and fixup
383 removed NOBUG_NAMESPACE in favor of new flag based logging
384 double definition typo fix (LOGIF)
385 add __func__ to logging output
386 make -DEBUG_ALPHA, -DEBUG_BETA or -DNDEBUG mandatory
387 forgotten to include stdlib.h
388 ONCE macro for BUG, TODO, PLANNED
389 MODE_CASE and PASS, making some statements more sane
390 MODE_CASE to MODE_SWITCH, _DBG macros only in alpha builds, BLOCK macro, disabled unfinished gdb support
391 new Makefile target to fetch README from wiki Doc
392 w3m is much better than lynx
394 more regular colong formatting in log output
395 tweak gcc branch prediction
396 small comment & whitespace changes only
397 new _IF forms for assertions and logging
400 control NOBUG_LIMIT with a env var
401 TRACE alias for DEBUG
402 made fmt parameter optional for logging
403 made fmt parameter optional for logging part2
404 new LIMIT definition (prelimary)
405 merged limit and flag checking