[Insight-developers] purify errors on VC++
Bill Hoffman
bill.hoffman@kitware.com
Thu, 19 Jul 2001 15:13:43 -0400
No problem, I just made the same fix....
At 11:46 AM 7/19/2001 -0700, Lydia Ng wrote:
>4 of the leaks come from MemberCommand/SimpleMemberCommand:
>
>They have there own implemenation of New().
>It is almost identical to the one defined in itkNewMacro
>except for the part which UnRegister the rawPtr.
>
>I replaced New() by itkNewMacro - this fixes the leak.
>
>Please let me know if this has other undesirable
>effects.
>
>----------------------------------------------------
>One of the leak is from line 131 of the BasicArchitectureTest:
>itk::OutputWindow::SetInstance(new TextOutput);
>
>This has been fixed by using New instead of new.
>-----------------------------------------------------
>
>The UMR's are definitely a Microsoft problem!
>I get them also with the following simple program:
>
>template <class T>
>class MyClass
>{
> public:
> static Test()
> {
> std::cout << typeid(T).name() << std::endl;
>
> }
>};
>
>int main()
>{
> MyClass<unsigned char>::Test();
>
> return 0;
>}
>
>
>Lydia
>
>> -----Original Message-----
>> From: Bill Hoffman [mailto:bill.hoffman@kitware.com]
>> Sent: Thursday, July 19, 2001 4:22 AM
>> To: lng@insightful.com; Insight-developers (E-mail)
>> Subject: Re: [Insight-developers] purify errors on VC++
>>
>>
>> The umr's are from the use of typeid and rtti as far as I can tell.
>> I think that is a Microsoft bug. I am not sure about the leaks.
>> I think that the SGI purify may not be working...
>>
>> -Bill
>>
>>
>> At 08:38 PM 7/18/01 -0700, Lydia Ng wrote:
>> >Hi All,
>> >
>> >I just installed purify for the PC and ran it on the
>> >itkBasicArchitectureTest.
>> >I get whole bunch of "Uninitialized memory read in DName::DName"
>> >errors - each time something is created using the ObjectFactory.
>> >(see an example below)
>> >
>> >Is this an ITK problem or VC++ problem?
>> >
>> >Also there are 5 memory leaks (see log below)
>> >
>> >GE people: do you these purify errors show on the other
>> >test platforms?
>> >
>> >Lydia
>> >
>> >
>> >-----------------------------------------------------
>> >
>> >[W] UMR: Uninitialized memory read in DName::DName(void) {1
>> occurrence}
>> > Reading 4 bytes from 0x00e6fb30 (4 bytes at 0x00e6fb30
>> uninitialized)
>> > Address 0x00e6fb30 points into a thread's stack
>> > Thread ID: 0x4d8
>> > Error location
>> > DName::DName(void) [MSVCRTD.dll]
>> > UnDecorator::getECSUDataType(void) [MSVCRTD.dll]
>> > UnDecorator::getBasicDataType(DName const&) [MSVCRTD.dll]
>> > UnDecorator::getPrimaryDataType(DName const&) [MSVCRTD.dll]
>> > UnDecorator::getDataType(DName *) [MSVCRTD.dll]
>> > UnDecorator::getDecoratedName(void) [MSVCRTD.dll]
>> > UnDecorator::operator char *(void) [MSVCRTD.dll]
>> > _unDName [MSVCRTD.dll]
>> > type_info::name(void)const [typname.obj]
>> >
>> itk::ObjectFactory<MemberCommand<AllEvents>::itk>::Create(void)
>> >[itkObjectFactory.h:71]
>> > public:
>> > static T::Pointer Create()
>> > {
>> > => LightObject::Pointer ret =
>> >ObjectFactory::CreateInstance(typeid(T).name());
>> > return dynamic_cast<T*>(ret.GetPointer());
>> > }
>> > };
>> >
>> >--------------------------------
>> >[W] MLK: Memory leak of 24 bytes from 1 block allocated in
>> >itk::LightObject::new(UINT)
>> > Distribution of leaked blocks
>> > Allocation location
>> > new(UINT) [new.cpp:23]
>> > itk::LightObject::new(UINT) [itkLightObject.cxx:225]
>> > main [itkBasicArchitectureTest.cxx:132]
>> > mainCRTStartup [crtexe.c:338]
>> >[W] MLK: Memory leak of 20 bytes from 1 block allocated in
>> >itk::LightObject::new(UINT)
>> > Distribution of leaked blocks
>> > Allocation location
>> > new(UINT) [new.cpp:23]
>> > itk::LightObject::new(UINT) [itkLightObject.cxx:225]
>> > itk::SimpleMemberCommand<ShowProgressObject>::New(void)
>> >[itkCommand.h:281]
>> > main [itkBasicArchitectureTest.cxx:176]
>> > mainCRTStartup [crtexe.c:338]
>> >[W] MLK: Memory leak of 20 bytes from 1 block allocated in
>> >itk::LightObject::new(UINT)
>> > Distribution of leaked blocks
>> > Allocation location
>> > new(UINT) [new.cpp:23]
>> > itk::LightObject::new(UINT) [itkLightObject.cxx:225]
>> > itk::SimpleMemberCommand<StartEndEvent>::New(void)
>> >[itkCommand.h:281]
>> > main [itkBasicArchitectureTest.cxx:184]
>> > mainCRTStartup [crtexe.c:338]
>> >[W] MLK: Memory leak of 20 bytes from 1 block allocated in
>> >itk::LightObject::new(UINT)
>> > Distribution of leaked blocks
>> > Allocation location
>> > new(UINT) [new.cpp:23]
>> > itk::LightObject::new(UINT) [itkLightObject.cxx:225]
>> > itk::SimpleMemberCommand<StartEndEvent>::New(void)
>> >[itkCommand.h:281]
>> > main [itkBasicArchitectureTest.cxx:190]
>> > mainCRTStartup [crtexe.c:338]
>> >[W] MLK: Memory leak of 24 bytes from 1 block allocated in
>> >itk::LightObject::new(UINT)
>> > Distribution of leaked blocks
>> > Allocation location
>> > new(UINT) [new.cpp:23]
>> > itk::LightObject::new(UINT) [itkLightObject.cxx:225]
>> > itk::MemberCommand<AllEvents>::New(void) [itkCommand.h:193]
>> > main [itkBasicArchitectureTest.cxx:197]
>> > mainCRTStartup [crtexe.c:338]
>> >
>> >
>> >_______________________________________________
>> >Insight-developers mailing list
>> >Insight-developers@public.kitware.com
>> >http://public.kitware.com/mailman/listinfo/insight-developers