I filed a bug on this today: 33502122.

> On 2017 Jun 30, at 14:53, Jerome Krinock <je...@ieee.org> wrote:
> 
> It looks to me that, in the edge case where user clicks File : Duplicate and 
> then enters a file path/name that already exists in the filesystem, so that 
> Cocoa prompts to "Replace" or "Cancel", the new NSDocument object gets four 
> (4) unbalanced retains, and therefore leaks.  This is reproducible in macOS 
> 10.12 or 10.13, Swift or Objective-C, ARC or not.
> 
> I say this because a document which has has been created in this way does not 
> dealloc as documents normally do when closed (or a few seconds thereafter), 
> but it does dealloc if I send it four unbalanced -release messages.  And if I 
> send it five unbalanced -release messages, a zombie squeals as expected.
> 
> The `leaks` command-line tool indicates 0 leaks before the File : Duplicate, 
> and 12 leaks after closing the duplicated (and I think leaky) document, 
> including some leaked code blocks, although none of the leaks are a 
> document/NSDocument object per se.
> 
> If no one can find a mistake in my analysis I’ll file a bug.
> 
> Jerry Krinock
> 
> In case you want to see for yourself:
> 
> https://youtu.be/zSQ1hY7JVZs (03:49)
> https://github.com/jerrykrinock/LeakyDocumentDemo
> 
> ACA80004:~ jk$ leaks 4800
> Process:         LeakyDocSwiftDemo [4800]
> Path:            
> /Users/jk/Library/Developer/Xcode/DerivedData/LeakyDocumentDemo-ctlrylejnnaaxqddgjsbbjsrcnzy/Build/Products/Debug/LeakyDocSwiftDemo.app/Contents/MacOS/LeakyDocSwiftDemo
> Load Address:    0x100000000
> Identifier:      com.sheepsystems.LeakyDocumentSwiftDemo
> Version:         1.0 (1)
> Code Type:       X86-64
> Parent Process:  debugserver [4801]
> 
> Date/Time:       2017-06-30 14:27:22.798 -0700
> Launch Time:     2017-06-30 14:24:29.663 -0700
> OS Version:      Mac OS X 10.12.6 (16G23a)
> Report Version:  7
> Analysis Tool:   /Applications/Xcode.app/Contents/Developer/usr/bin/leaks
> Analysis Tool Version:  Xcode 8.3.3 (8E3004b)
> ----
> 
> leaks Report Version:  2.0
> Process 4800: 45412 nodes malloced for 6440 KB
> Process 4800: 12 leaks for 608 total leaked bytes.
> Leak: 0x608000221f40  size=32  zone: DefaultMallocZone_0x100ea5000   CFString 
> (Storage)  C  CoreFoundation  length: 4  has-length-byte:  "doc1"
> Leak: 0x608000222c40  size=32  zone: DefaultMallocZone_0x100ea5000   
> __NSExactBlockVariable__  __block variable  CoreFoundation
>       0x00000000 0x00000000 0x00222c40 0x00006080     ........@,"..`..
>       0x21000004 0x00000020 0x0045d200 0x00006000     ...! .....E..`..
> Leak: 0x608000222c60  size=32  zone: DefaultMallocZone_0x100ea5000   
> __NSExactBlockVariable__  __block variable  CoreFoundation
>       0x00000000 0x00000000 0x00222c60 0x00006080     ........`,"..`..
>       0x21000004 0x00000020 0x00104f01 0x00006000     ...! ....O...`..
> Leak: 0x608000256620  size=48  zone: DefaultMallocZone_0x100ea5000   
> __NSMallocBlock__  ObjC  CoreFoundation  AppKit  __75-[NSWindow 
> _titlebarEditingDidEndNormally:title:editingRange:grantHandler:]_block_invoke_3
>   0x7fff8cb68ce9
> Leak: 0x60800025a280  size=48  zone: DefaultMallocZone_0x100ea5000   
> __NSMallocBlock__  ObjC  CoreFoundation  AppKit  __77-[NSDocument 
> duplicateDocumentWithDelegate:didDuplicateSelector:contextInfo:]_block_invoke.2577
>   0x7fff8c7f24a5
> Leak: 0x60800025d220  size=48  zone: DefaultMallocZone_0x100ea5000   
> __NSMallocBlock__  ObjC  CoreFoundation  AppKit  
> __81-[NSDocument(NSDocumentSerializationAPIs) 
> _activityCompletionHandlerForActivity:]_block_invoke  0x7fff8c89437b
> Leak: 0x60800025d2e0  size=48  zone: DefaultMallocZone_0x100ea5000   
> NSMutableArray  ObjC  CoreFoundation  item count: 5
> Leak: 0x608000279e80  size=64  zone: DefaultMallocZone_0x100ea5000   CFString 
>  ObjC  CoreFoundation  length: 4  mutable non-inline:  "doc1"
> Leak: 0x608000462880  size=64  zone: DefaultMallocZone_0x100ea5000   
> _NSDocumentActivity  ObjC  AppKit
>       0xa9241079 0x001dffff 0x00000001 0x00000000     y.$.............
>       0x00000000 0x00000000 0x00464400 0x00006080     .........DF..`..
>       0x00000101 0x00000000 0x0025d2e0 0x00006080     ..........%..`..
>       0x00465c00 0x00006080 0x00000000 0x00000000     .\F..`..........
> Leak: 0x608000464400  size=64  zone: DefaultMallocZone_0x100ea5000   
> __NSMallocBlock__  ObjC  CoreFoundation  AppKit  __77-[NSDocument 
> duplicateDocumentWithDelegate:didDuplicateSelector:contextInfo:]_block_invoke_4
>   0x7fff8c7f1dd9
> Leak: 0x608000465c00  size=64  zone: DefaultMallocZone_0x100ea5000   
> __NSMallocBlock__  ObjC  CoreFoundation  AppKit  __77-[NSDocument 
> duplicateDocumentWithDelegate:didDuplicateSelector:contextInfo:]_block_invoke.2594
>   0x7fff8c7f27e2
> Leak: 0x608000466440  size=64  zone: DefaultMallocZone_0x100ea5000   
> __NSMallocBlock__  ObjC  CoreFoundation  AppKit  __75-[NSWindow 
> _titlebarEditingDidEndNormally:title:editingRange:grantHandler:]_block_invoke.4316
>   0x7fff8cb68a73
> ACA80004:~ jk$
> 
> P.S.  Despite all of the Objective-C in that report, I assure you this is my 
> Swift target running :))
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/jerry%40ieee.org
> 
> This email sent to je...@ieee.org

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to