<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56751>56751</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            LeakSanitizer gives false positives when used with Swift on Linux 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          hassila
      </td>
    </tr>
</table>

<pre>
    As originally reported here:

https://github.com/apple/swift-corelibs-xctest/issues/342#issuecomment-1196408328

I get false leak positives when enabling LSan with Swift/Linux - [according to helpful engineers](https://github.com/apple/swift-corelibs-xctest/issues/342#issuecomment-1176297429) there it seems to be due to Swift doing smart 'bit stuffing' of pointers. 

It is worth noting that the same simple test does not give a false positive on macOS, so it may be that relevant code is platform-defined out (unnecessarily) for Linux.

I'm running with the 5.6 swift toolchain and related artefacts - this is reproduced on Ubuntu - running 

gives the following from xctest:
```
ubuntu@swift:/home/xyzzy/swift-data-model$ swift test --sanitize address | swift demangle
Compiling plugin Swift-DocC...
Compiling plugin Swift-DocC Preview...
Building for debugging...
[1/3] Emitting module DataModelTests
[2/3] Compiling DataModelTests DataModelTests.swift
[5/8] /home/xyzzy/swift-data-model/.build/aarch64-unknown-linux-gnu/debug/swift-data-modelPackageTests.derived/runner.swift
[6/8] Wrapping AST for DataModelTests for debugging
[7/11] Compiling swift_data_modelPackageTests runner.swift
[8/11] Compiling swift_data_modelPackageTests DataModelTests.swift
[9/11] Emitting module swift_data_modelPackageTests
[12/13] Wrapping AST for swift-data-modelPackageTests for debugging
/usr/bin/ld.gold: warning: Cannot export local symbol '__asan_extra_spill_area'
[13/13] Linking swift-data-modelPackageTests.xctest
Build complete! (3.13s)
Test Suite 'All tests' started at 2022-04-27 18:31:07.420
Test Suite 'debug.xctest' started at 2022-04-27 18:31:07.423
Test Suite 'DataModelTests' started at 2022-04-27 18:31:07.423
Test Case 'DataModelTests.testThatDataModelFailsWriting' started at 2022-04-27 18:31:07.423
Test Case 'DataModelTests.testThatDataModelFailsWriting' passed (0.153 seconds)
Test Suite 'DataModelTests' passed at 2022-04-27 18:31:07.577
         Executed 1 test, with 0 failures (0 unexpected) in 0.153 (0.153) seconds
Test Suite 'debug.xctest' passed at 2022-04-27 18:31:07.577
         Executed 1 test, with 0 failures (0 unexpected) in 0.153 (0.153) seconds
Test Suite 'All tests' passed at 2022-04-27 18:31:07.577
         Executed 1 test, with 0 failures (0 unexpected) in 0.153 (0.153) seconds

=================================================================
==6874==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0xaaaad334683c in malloc /home/build-user/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:129:3
    #1 0xffff9861db58 in operator new(unsigned long) (/lib/aarch64-linux-gnu/libstdc++.so.6+0x9fb58)
    #2 0xffff997ce258 in swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::formWeakReference() (/usr/lib/swift/linux/libswiftCore.so+0x3ea258)
    #3 0xffff9979e938 in swift_weakAssign (/usr/lib/swift/linux/libswiftCore.so+0x3ba938)
    #4 0xffff98951168 in $s6XCTest9XCTWaiterC4wait3for7timeout12enforceOrder4file4lineAC6ResultOSayAA0A11ExpectationCG_SdSbs12StaticStringVSitF (/usr/lib/swift/linux/libXCTest.so+0x3f168)
    #5 0xffff989514a8 in $s6XCTest9XCTWaiterC4wait3for7timeout12enforceOrder4file4lineAC6ResultOSayAA0A11ExpectationCG_SdSbs12StaticStringVSitFZ (/usr/lib/swift/linux/libXCTest.so+0x3f4a8)
    #6 0xffff9893fda8 in $s6XCTest21awaitUsingExpectationyyyyYaKcKF (/usr/lib/swift/linux/libXCTest.so+0x2dda8)
    #7 0xffff9893f37c in $s6XCTest0A4CaseC10invokeTestyyF (/usr/lib/swift/linux/libXCTest.so+0x2d37c)
    #8 0xffff9893f1b0 in $s6XCTest0A4CaseC7performyyAA0A3RunCF (/usr/lib/swift/linux/libXCTest.so+0x2d1b0)
    #9 0xffff989436d4 in $s6XCTestAAC3runyyF (/usr/lib/swift/linux/libXCTest.so+0x316d4)
    #10 0xffff9894194c in $s6XCTest0A5SuiteC7performyyAA0A3RunCF (/usr/lib/swift/linux/libXCTest.so+0x2f94c)
    #11 0xffff989436d4 in $s6XCTestAAC3runyyF (/usr/lib/swift/linux/libXCTest.so+0x316d4)
    #12 0xffff9894194c in $s6XCTest0A5SuiteC7performyyAA0A3RunCF (/usr/lib/swift/linux/libXCTest.so+0x2f94c)
    #13 0xffff989436d4 in $s6XCTestAAC3runyyF (/usr/lib/swift/linux/libXCTest.so+0x316d4)
    #14 0xffff9894194c in $s6XCTest0A5SuiteC7performyyAA0A3RunCF (/usr/lib/swift/linux/libXCTest.so+0x2f94c)
    #15 0xffff989436d4 in $s6XCTestAAC3runyyF (/usr/lib/swift/linux/libXCTest.so+0x316d4)
    #16 0xffff9893dee0 in $s6XCTest7XCTMain_9arguments9observerss5NeverOSayAA0A4CaseCm04testF5Class_SaySS_yAHKctG8allTeststG_SaySSGSayAA0A11Observation_pGtF (/usr/lib/swift/linux/libXCTest.so+0x2bee0)
    #17 0xffff9893da58 in $s6XCTest7XCTMainys5NeverOSayAA0A4CaseCm04testD5Class_SaySS_yAFKctG8allTeststGF (/usr/lib/swift/linux/libXCTest.so+0x2ba58)
    #18 0xaaaad36ef024 in $s28swift_data_modelPackageTests6RunnerV4mainyyFZ /home/xyzzy/swift-data-model/.build/aarch64-unknown-linux-gnu/debug/swift-data-modelPackageTests.derived/runner.swift:10:9
    #19 0xaaaad36ef098 in $s28swift_data_modelPackageTests6RunnerV5$mainyyFZ /home/xyzzy/swift-data-model/.build/aarch64-unknown-linux-gnu/debug/swift-data-modelPackageTests.derived/runner.swift:3:1
    #20 0xaaaad36ef0b0 in main /home/xyzzy/swift-data-model/.build/aarch64-unknown-linux-gnu/debug/swift-data-modelPackageTests.derived/runner.swift
    #21 0xffff98783d4c in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x20d4c)
    #22 0xaaaad32d3670 in _start (/home/xyzzy/swift-data-model/.build/aarch64-unknown-linux-gnu/debug/swift-data-modelPackageTests.xctest+0x91670)

SUMMARY: AddressSanitizer: 32 byte(s) leaked in 1 allocation(s).
ubuntu@swift:/home/xyzzy/swift-data-model$ 
```

The test is just empty (after having stripped it out piece by piece to nail down the leaker):

```
import XCTest

@testable import DataModel
@testable import DataModelExecutable

final class DataModelTests: XCTestCase {

    override func setUp() {
        super.setUp()
    }

    override func tearDown() {
        super.tearDown()
    }

    func testThatDataModelFailsWriting() async throws {
    }
}
```

On macOS with the xctest running there with Xcode 13.3, I don't get any leak notified.

There are some relevant background discussion in the linked case above - let me know if you need additional information.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVWdty2zgS_Rr5BSUW75cHPchynE1lsp6yksnMvqhAApQwIQEVAVpWvn66QYqSKMfJeHezXpVEUgTQfU6j0WgAuWL72VwT1Yi1kLSq9qThW9UYzsiGN3wSzCfuzcTtrxtjthrf-bfwXQuzaXOnUDX8odttxeGud6I000I1vBK5nj4WhmsD74XWLdfwEIT-xA_sX2hZc2mmnpfFoZsGfnqq7B1Zc0NKWmlOKk6_kK3SwogHrsluwyXhkuaVkGvyy5JKsgMwZInKQccvQraPZEom0TUtAAvDakYBpWpbthU0BbacN3oS3Uz89L9GK4n9LAn9bOJnxKA9iTBEc15rRJNzwlqOTxY3YQph6po2hkz8JMe6pi1LeAt_iSrBAkIagO2QM0MZIsAm0GsbIpWxXDfUoEaiaQ0XUQMLgpBBCdgPapE1WJLQ3r4H0xIlSU2Lu-XEXxCtEG5N94jUSgT2_IFKQwrFOCrdVtSUqqmnjANMcBrVIva0lZIXXGvaiGqP7KESsb3inCEHXjVpoDaCtl2IoCMnJtbgYBtVFRsqJKGSoXqKngkG4iUtjIYuNhuAAV9w20axtkAMknzKW2laKD7IPtW6tj6EikpVVWqH5WWjatL36uDzsdt_7d_WypyEroXWuctG1egdj_uvX_eDlzBq6LQGC1UTPzwQQdtPp5pKsPNXMDxjDdiHTJJFX4Pxmso1OJtVtlD1Vljv3lYtOGvnItMbVSwcx_luHfJrwx8E3w11r1tR2VGAHcF43q6hwXoohoHioRPDeCBvamGsEwGFFtzmBuh8QDYfgYMe6vuH-kcY5zVHf53ObIfmETRPsfmPWPHWyRE_jkfaFJs4nLbyi1Q7Oa3Qp6Zr2UKZpfVE-19p8YWueYeC8Qa6H0Wha_BmBCs-wPrcwNBHUvPlR2u0EbkzOw7NE2jueedWsQpWCGd1AYc8CSL9u1KetXQ2SBv37HMyj36BHe0FT9rkOUs_aSH_ttUNXHMh4VoxZ62gW4M52dEGxyk-LqjE-MQfcR4ilSpoRfS-zlWFUXG1ojCIVvzRNHSlwTjVijacQskRcTAghpDzZbDet1yiH_bHcQLhDQOmAaf0MJoFjhdAjM-6KtiILFthOOKZV5Ud3BpDtDbUTp0QKn3X96duOIW3Xgq0Ag8ubuKEvvuUGGuoA5IflRQ8JWk0XF8ia0H1E6IcxPYRpoHh9S0Vlf7cCNPPUD9N0ZZqDXqga1zHiwKYUgsl2be66NIifftncEbJwZ_cjLx55EWLxDzS9c-im6tcmD1F1UIgt1BIK8FpOfQhwykPAnKH7gATXx6Q_oALvEqQZ-7-ShD21-Dm__57QiROk7B7enN_f3ePgfEXSIKXfQLR4AsGIQrNRGpeq2Zvs-Qzm9yIBip02TOkj4FP8j1GtVT3lvWIyv-EKodXsAKAeIsiMSEaMiECH8huXeI-UviwIAjjNChQQm2bnMzidqaetppjnK-qh3oKiVmn47aw0xlvpg3-g0waZ3QI5_1t1Qlb2UndKbZbAODBmAZ_OsPhAY4SPlkaeyyPUsShtryhBqYcyXc2AdVijQlppTBkZOg9R5V9EnGaPGBab1gx8a_h62jlQCZw7T5mJcgf4kqv3z_oz5KC-53-ISkM5ve8XCjIFWFJsXji9bUw-iMUoc0vS9_JChNpCckhqIVh9IbAr6uDmfZn6EuoC2sJWXBL6sCtm1k7hrpfCFmGPTt8tYAFDJCz1AJO_UtuwZFbxrPgyG21A81zjWZ9qcKcgsCxwnDozCzyvNgqhLxZx78vMPRkcPtMIfo0i3AH9wCMkBhRc1hpeD6X8Lfgdw2kdWEJrhWi9eaL-J7rtjJ3S7qfz925572xEYUaoeTi7WrJlrn2_CW-KJamgWnlt6Uwtz9GrAM2sCoB9JhUdEoqpP9TUv96GStAPWYVH1kFJbtg5XsUyXzSoPkE2h4-f9D3xfsXmddn7BJIcgokSIoREHceYmax8FwhH9QXm-bt9y9UD-LH6tNT9V7ufkN9AiEJh-zedldw38rFCzGAjjGG7IghDGIWjjDM54sA1hYvZB14IHGs0XNPVHpZeGn1yKYJ_zneJSi5QOH9fOL-qyAe_Hzi4asgHv184qeRjnE-HuEJ3D5QIVcZbdYtbvbpTOWQ8jzwRuvonxzuhzDdxYLaDTHnvY0WFSTNKyhbLlf7-T_eF-ZtClmPXZqYt13B2yHC31mhNoyutm9fNkH5ORC4YHgaQhmNxrH8wHD_HJubEZvbEZsXwqWXWYmXDqlnzEvXH3ygz6G-sYkR39vtld_CGqns7VT4GnabIK114TLimJ1xzNK_xzGCqq-OZoBUz3Nn94xlN3ki7leC-Qzrca5J0oB18W8Fy5O8WNm9jlUP_LtLi-K4ovBddhnjfH-wCmQccWKt0unoxf9M0xz2IHD94wGYAW13XX768GF-_weuQOfdNvbZqnS0ysTFJ6zD7GKzX15CNOtLnX9ra_3Jbfp-12LTn3cITf5s4c7rrdmjLWkJaTfZ0Ae7Lwhp8naL8Iw9utgKXnCA3z8YRSQVFWFgRntgYMk0E7smPdt8OMcgart32QW2s3qhi6hoXnHSVxp2p75fo9tAwaJTmSUe3JECI_F4rx56o8PQbbQl16ft0PUUhPZGME7KVhZEc_Npe1hTHiqT_qPbLQ6SY5UTB05unhdsOG1uwIbPyz6v9az4Xuqz24RWFdV7rLlp1E6f6z1KHR6ecqS7_kDseDrVjY7hZKk717Olv9tjMS9wAtzbegduA1wSY88xqez2Z-wJXSk4c0buCkIo_DS4_fGcLYdhuW5UKxlhQhctLL-VxLFknVFIHFkF9i3NweJkCioMAQE48IkoyV61RHLco2NM4LgDTxG4vKztKHSu-MyLozTz4yzxr9gsYFmQ0SsjTMVnZ_tNpDs1Oz8u7E9iW9wFPB7A4gFcdwJ71TbV7JnTVdweutwlGs5UoziJvKvNLI4j7pZpkWauy6M8zhjjjHqplwcs4Wl8VdGcV3o2ia4nvi85UEcR8DyJbq7EDHcn3cRPvMD1I9_JWZT5bu4FAY9Ynhcw5DgE8spBHI5q1lfNzEKCUKmhsBIYFIdCavdAOLfqQD5tzUY1sw2-r-iVVT2z0P8CAPnSOw">