[all-commits] [llvm/llvm-project] ab2300: [PassManagerBuilder] Remove global extension when ...

Elia Geretto via All-commits all-commits at lists.llvm.org
Wed Jan 29 08:16:00 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: ab2300bc154f7bed43f85f74fd3fe31be71d90e0
      https://github.com/llvm/llvm-project/commit/ab2300bc154f7bed43f85f74fd3fe31be71d90e0
  Author: Elia Geretto <elia.f.geretto at gmail.com>
  Date:   2020-01-29 (Wed, 29 Jan 2020)

  Changed paths:
    M llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
    M llvm/lib/Transforms/IPO/PassManagerBuilder.cpp

  Log Message:
  -----------
  [PassManagerBuilder] Remove global extension when a plugin is unloaded

This commit fixes PR39321.

GlobalExtensions is not guaranteed to be destroyed when optimizer plugins are unloaded. If it is indeed destroyed after a plugin is dlclose-d, the destructor of the corresponding ExtensionFn is not mapped anymore, causing a call to unmapped memory during destruction.

This commit guarantees that extensions coming from external plugins are removed from GlobalExtensions when the plugin is unloaded if GlobalExtensions has not been destroyed yet.

Differential Revision: https://reviews.llvm.org/D71959




More information about the All-commits mailing list