Committed as rev 146. On Fri, May 15, 2009 at 7:23 PM, Oleg Smolsky <o...@smolsky.net> wrote:
> Here we go. > > > On 2009/5/15 18:56, Kenton Varda wrote: > > Ugh, I missed that one because I was doing my testing on Linux and that is > in Windows-only code. > Ideally I'd prefer if each GoogleOnce object registered a shutdown > function for itself. But I suppose that could create a deadlock because the > shutdown function registry is once-initialized. So, sure, use destructors. > Do you want to send me a patch since you're set up to test it? > > On Fri, May 15, 2009 at 5:41 PM, Oleg Smolsky <o...@smolsky.net> wrote: > >> ...sent the message too quickly. >> >> So, the fix is trivial, yet it comes down to the same very discussion as >> the original issue. In this case it's cleaning up after the cleaners :) It's >> a global pointer that is initialized when global constructors (a.k.a. static >> initializers) run. The pointer to the heap block is never lost, but it is >> never deallocated either. The fix is trivial - all that is needed is the >> destructor. This, of course, assumes that the main thread would exit only >> after all additional workers are dead. >> >> Oleg. >> >> On 2009/5/15 17:28, Oleg Smolsky wrote: >> >>> Actually, I got lucky - the culprit was not in headers. It's this line in >>> once.cc: >>> >>> if (internal_ == NULL) internal_ = new GoogleOnceInternal; >>> >>> The log is as follows: >>> >>> Detected memory leaks! >>> Dumping objects -> >>> ..\src\google\protobuf\stubs\once.cc(65) : {1438} client block at >>> 0x00B92620, subtype 0, 24 bytes long. >>> Data: <h - > 68 A6 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {1437} client block at >>> 0x00B925C8, subtype 0, 24 bytes long. >>> Data: <0 - > 30 A6 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {946} client block at >>> 0x00246AB0, subtype 0, 24 bytes long. >>> Data: < - > A0 A1 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {945} client block at >>> 0x00249CD0, subtype 0, 24 bytes long. >>> Data: <h - > 68 A1 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {934} client block at >>> 0x00249840, subtype 0, 24 bytes long. >>> Data: <0 - > 30 A1 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {812} client block at >>> 0x002469B0, subtype 0, 24 bytes long. >>> Data: <x - > 78 9D 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(73) : {685} client block at >>> 0x00B91FB0, subtype 0, 24 bytes long. >>> Data: < - > D0 9C 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(73) : {667} client block at >>> 0x00B91608, subtype 0, 24 bytes long. >>> Data: <` - > 60 9C 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {666} client block at >>> 0x00B915B0, subtype 0, 24 bytes long. >>> Data: <( - > 28 9C 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {663} client block at >>> 0x00B913D8, subtype 0, 24 bytes long. >>> Data: <Pu- > 50 75 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {148} client block at >>> 0x00245820, subtype 0, 24 bytes long. >>> Data: <pt- > 70 74 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {147} client block at >>> 0x002457C8, subtype 0, 24 bytes long. >>> Data: <8t- > 38 74 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {136} client block at >>> 0x00245290, subtype 0, 24 bytes long. >>> Data: < t- > 00 74 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> ..\src\google\protobuf\stubs\once.cc(65) : {135} client block at >>> 0x00245238, subtype 0, 24 bytes long. >>> Data: < s- > C8 73 2D 00 FF FF FF FF 00 00 00 00 00 00 00 00 >>> Object dump complete. >>> >>> >> > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/protobuf?hl=en -~----------~----~----~----~------~----~------~--~---