Hi, When compiling the code below with gcc -c -O2 -Wall main.cpp -I/opt/ACE_wrappers , I get the warning /opt/ACE_wrappers/ace/Guard_T.inl:24: unexpected warning: guard 13936 owner may be used uninitialized in this function
The warning refers to a guard's field, where the mutex passed in this line ACE_Write_Guard< MUTEX > guard (_mutex); I've done a thousand tests but I have been unable to reproduce the warning without using ACE. Even trimming the ACE headers made the warning to go away. What convinces me that the problem is in the compiler and not in ACE, or in my code, is that removing some lines which have nothing to do with the mutex makes the warning to disappear. Also commenting out the throw at the constructor disables the warning If you comment out any of these 3 lines, the warning disappears. c_pBufferStart( new int[ 10 ]), c_pBufferEnd( c_pBufferStart+10), m_pRead( (int*)c_pBufferStart ), I can see the warning with both ACE 5.5 and latest ACE 5.6.5 available at ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.5.tar.gz (only 9Mb) I could also cut & paste the .ii file, but it's 38Kb thanks #include <ace/Thread_Mutex.h> #include <ace/Guard_T.h> template< class MUTEX = ACE_Thread_Mutex> class CircularBuffer { // Construction/Destruction public: CircularBuffer(MUTEX *mutex = NULL); unsigned long write( ); protected: const int* c_pBufferStart; const int* c_pBufferEnd; int* m_pRead; MUTEX _nullMutex; MUTEX &_mutex; }; template< class MUTEX > CircularBuffer< MUTEX >::CircularBuffer(MUTEX *mutex): c_pBufferStart( new int[ 10 ]), c_pBufferEnd( c_pBufferStart+10), m_pRead( (int*)c_pBufferStart ), _mutex(mutex == NULL ? _nullMutex : *mutex) { if (mutex == NULL) throw "hjhk"; } template< class MUTEX > unsigned long CircularBuffer< MUTEX >::write( ) { ACE_Write_Guard< MUTEX > guard (_mutex); return 0; } int main() { CircularBuffer<ACE_Thread_Mutex> buffer2; buffer2.write(); } -- Summary: unexpected warning: guard 13936 owner may be used uninitialized in this function Product: gcc Version: 4.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: gcc at dpinol dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36833