Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SR-11365] Memory leak detected in 'test/ParseableInterface/' test cases #53766

Closed
rintaro mannequin opened this issue Aug 23, 2019 · 5 comments
Closed

[SR-11365] Memory leak detected in 'test/ParseableInterface/' test cases #53766

rintaro mannequin opened this issue Aug 23, 2019 · 5 comments
Assignees
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself memory leak bug: Memory leak

Comments

@rintaro
Copy link
Mannequin

rintaro mannequin commented Aug 23, 2019

Previous ID SR-11365
Radar None
Original Reporter @rintaro
Type Bug
Status Resolved
Resolution Done
Environment

Ubuntu 18.04
master (075dd74)

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, Leak
Assignee @belkadan
Priority Medium

md5: 8b58b00e2a479a9012a8e2e2fc071abe

Issue Description:

$ utils/build-script -R --debug-swift-stdlib --enable-lsan --skip-build-benchmarks
$ ../build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift -version
Swift version 5.1-dev (LLVM c5340df2d1, Swift 310c9c9d19)
Target: x86_64-unknown-linux-gnu
$ utils/run-test --build-dir ../build/Ninja-ReleaseAssert+stdlib-DebugAssert test/ParseableInterface

... <snip> ...

********************
Testing Time: 12.13s
********************
Failing Tests (32):
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/ObjCAttrWithoutFoundation.swiftinterface
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/RebuildRemarks/malformed-compiled-module.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/RebuildRemarks/missing-dependency.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/RebuildRemarks/out-of-date-cached-module.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/RebuildRemarks/out-of-date-compiled-module.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/RebuildRemarks/out-of-date-forwarding-module.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/RebuildRemarks/rebuild-transitive-import.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/SerializedSIL.swiftinterface
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/SystemDependencies.swiftinterface
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-diagnostics.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-effective-version-irrelevant.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-errors-in-importing-file.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-init.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-intermediate-mtime-change-rebuilds-only-intermediate.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-intermediate-size-change-rebuilds-only-intermediate.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-leaf-mtime-change-rebuilds-all.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-leaf-size-change-rebuilds-all.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/module-cache-no-rebuild.swift
    Swift(linux-x86_64) :: ParseableInterface/ModuleCache/swiftdoc-next-to-swiftinterface.swift
    Swift(linux-x86_64) :: ParseableInterface/ParseStdlib.swiftinterface
    Swift(linux-x86_64) :: ParseableInterface/SmokeTest.swiftinterface
    Swift(linux-x86_64) :: ParseableInterface/can-import.swift
    Swift(linux-x86_64) :: ParseableInterface/default-args.swift
    Swift(linux-x86_64) :: ParseableInterface/enums-layout.swift
    Swift(linux-x86_64) :: ParseableInterface/function_builders.swift
    Swift(linux-x86_64) :: ParseableInterface/inherited-defaults-execution.swift
    Swift(linux-x86_64) :: ParseableInterface/lazy-vars.swift
    Swift(linux-x86_64) :: ParseableInterface/linking-to-module.swift
    Swift(linux-x86_64) :: ParseableInterface/multiline-availability-message.swift
    Swift(linux-x86_64) :: ParseableInterface/opaque-result-types.swift
    Swift(linux-x86_64) :: ParseableInterface/property_wrappers.swift
    Swift(linux-x86_64) :: ParseableInterface/stored-properties-client.swift

  Expected Passes    : 60
  Unsupported Tests  : 5
  Unexpected Failures: 32

2 warning(s) in tests.
utils/run-test: fatal error: command terminated with a non-zero exit status 1, aborting

Traces are almost the same for all failing tests:

FAIL: Swift(linux-x86_64) :: ParseableInterface/ModuleCache/ObjCAttrWithoutFoundation.swiftinterface (2 of 97)
******************** TEST 'Swift(linux-x86_64) :: ParseableInterface/ModuleCache/ObjCAttrWithoutFoundation.swiftinterface' FAILED ********************
Script:
--
: 'RUN: at line 4';   rm -rf "/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/test-linux-x86_64/ParseableInterface/ModuleCache/Output/ObjCAttrWithoutFoundation.swiftinterface.tmp" && mkdir -p "/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/test-linux-x86_64/ParseableInterface/ModuleCache/Output/ObjCAttrWithoutFoundation.swiftinterface.tmp"
: 'RUN: at line 5';   echo 'import ObjCAttrWithoutFoundation' | /home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift -frontend -target x86_64-unknown-linux-gnu  -module-cache-path '/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache' -swift-version 4   -typo-correction-limit 10  -typecheck -module-cache-path /home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/test-linux-x86_64/ParseableInterface/ModuleCache/Output/ObjCAttrWithoutFoundation.swiftinterface.tmp -I /home/rintaro/Repositories/swift-oss/swift/test/ParseableInterface/ModuleCache -
--
Exit Code: 23

Command Output (stderr):
--

=================================================================
==8679==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 120 byte(s) in 1 object(s) allocated from:
    #&#8203;0 0xac2f08 in operator new(unsigned long) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0xac2f08)
    #&#8203;1 0x17674dd in swift::SerializedASTFile::setParseableInterface(llvm::StringRef) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0x17674dd)
    #&#8203;2 0x176708a in swift::SerializedModuleLoaderBase::loadAST(swift::ModuleDecl&, llvm::Optional<swift::SourceLoc>, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, bool, bool) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0x176708a)
    #&#8203;3 0x1768ed6 in swift::SerializedModuleLoaderBase::loadModule(swift::SourceLoc, llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0x1768ed6)
    #&#8203;4 0x1955021 in swift::ASTContext::getModule(llvm::ArrayRef<std::pair<swift::Identifier, swift::SourceLoc> >) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0x1955021)
    #&#8203;5 0x15762f3 in swift::performNameBinding(swift::SourceFile&, unsigned int) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0x15762f3)
    #&#8203;6 0x166b2f7 in swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0x166b2f7)
    #&#8203;7 0xdbb15c in swift::CompilerInstance::parseAndTypeCheckMainFileUpTo(swift::SourceFile::ASTStage_t, swift::DelayedParsingCallbacks*, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0xdbb15c)
    #&#8203;8 0xdba073 in swift::CompilerInstance::parseAndCheckTypesUpTo(swift::CompilerInstance::ImplicitImports const&, swift::SourceFile::ASTStage_t) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0xdba073)
    #&#8203;9 0xdb96b7 in swift::CompilerInstance::performSemaUpTo(swift::SourceFile::ASTStage_t) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0xdb96b7)
    #&#8203;10 0xb4722c in performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0xb4722c)
    #&#8203;11 0xb45ef6 in swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0xb45ef6)
    #&#8203;12 0xae7f16 in main (/home/rintaro/Repositories/swift-oss/build/Ninja-ReleaseAssert+stdlib-DebugAssert/swift-linux-x86_64/bin/swift+0xae7f16)
    #&#8203;13 0x7f92e2ecbb96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

SUMMARY: LeakSanitizer: 120 byte(s) leaked in 1 allocation(s).

--
@rintaro
Copy link
Mannequin Author

rintaro mannequin commented Aug 23, 2019

CC: @belkadan @harlanhaskins

@belkadan
Copy link
Contributor

Is this on master or 5.1?

@rintaro
Copy link
Mannequin Author

rintaro mannequin commented Aug 23, 2019

master as of 8/23 11:00.

@belkadan
Copy link
Contributor

Oh, never mind, I see it. Looks like @adrian-prantl added std::string ParseableInterface to SerializedASTFile back in April (!), but SerializedASTFiles don't have their destructor run. We should put that in the ModuleFile instead (and possibly have SerializedASTFile::getFilename return it directly instead of adding another API to LoadedFile).

@belkadan
Copy link
Contributor

#26816

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself memory leak bug: Memory leak
Projects
None yet
Development

No branches or pull requests

1 participant