|
From: Madhan <mad...@or...> - 2005-09-22 03:29:53
|
With a database application like Oracle that uses shared memory heavily the rate of false positives is causing concern. Cross process data initialization is found in almost every piece of data that resides in the shared memory. As memcheck like tools look at the shared memory segment as local memory numerous false positives are generated. The scenario I am referring to here happens when process A copies uninitialized data to shared memory and process B initializes it, later A reads it back. The initialization happening inbetween is not visible to memcheck and hence reports the read by process A as an error. Around 70% of errors reported by Valgrind fall under this category. As such false positives are in the order of 1000s and as filtering them is mostly manual it makes the use of memcheck close to impossible with Oracle. Purify also suffers from the same disadvantage. Making shared memory always defined will be a very simple fix and can be of great help. Any data copied into shared memory becomes automatically defined. The real benefit occurs when the meta data for the shared memory is also shared among processes. All processes sharing the memory will update the meta data. Synchronization is not very important as the original data access should be synchronized. Thanks, Madhan. Tools dev, Server Technologies |