This is the mail archive of the
pthreads-win32@sourceware.org
mailing list for the pthreas-win32 project.
pthreads-win32 and Coverity
- From: "Robert Kindred" <RKindred at SwRI dot edu>
- To: <pthreads-win32 at sourceware dot org>
- Date: Thu, 5 Jun 2008 15:00:15 -0500
- Subject: pthreads-win32 and Coverity
Everyone:
Has anyone on this mailing list heard of Coverity? I
am evaluating it in a desperate attempt to find a bug in
my code. When I run it in debug mode, nothing breaks. When
my program runs in release mode, it gets an access violation
after a couple of days running, which could be anything.
Anyway, one of the things Coverity uncovered is called
FORWARD NULL. Here is an example below from ptw32_throw.c,
line 84:
Event var_compare_op: Added "sp" due to comparison "sp == 0"
At conditional (1): "sp == 0" taking true path
68 if (NULL == sp || sp->implicit)
69 {
70 /*
71 * We're inside a non-POSIX initialised Win32 thread
72 * so there is no point to jump or throw back to. Just do an
73 * explicit thread exit here after cleaning up POSIX
74 * residue (i.e. cleanup handlers, POSIX thread handle etc).
75 */
76 unsigned exitCode = 0;
77
78 switch (exception)
79 {
80 case PTW32_EPS_CANCEL:
81 exitCode = (unsigned) PTHREAD_CANCELED;
82 break;
At conditional (2): "exception == 1" taking true path
83 case PTW32_EPS_EXIT:
Event var_deref_op: Variable "sp" tracked as NULL was dereferenced.
84 exitCode = (unsigned) sp->exitStatus;;
85 break;
86 }
In other words, if sp shows to be null at line 68, it should not be
dereferenced at line 84. I can show some others, but I am not sure
if they are significant.
Let me know what you think,
Robert Kindred