New issue
Advanced search Search tips

Issue 698982 link

Starred by 2 users

Issue metadata

Status: Started
Owner:
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Encourage LazyInstance::Leaky

Project Member Reported by scottmg@chromium.org, Mar 7 2017

Issue description

Leaky seems like the right default.

See also https://groups.google.com/a/chromium.org/d/msg/chromium-dev/OLS4JSZvowI/-qUz9xzJBAAJ .

This is also related to https://crbug.com/686866 as only Leaky's can be switched to a simple static initializer.

I was thinking first I'd rename DefaultLazyInstanceTraits to DestructorOnExitLazyInstanceTraits (or something) and then require the selection of which behaviour is desired, either LazyInstance<T>::Leaky, or LazyInstance<T>::DestructorOnExit explicitly. From a quick look, I believe many instances of non-Leaky are simply because the author didn't think about it, and so ended up with default non-Leaky behaviour.

This would be a slightly large change because of https://cs.chromium.org/search/?q=friend.*defaultlazyinstancetraits+package:%5Echromium$&type=cs .

But, having done that, I think it'll be easier to reduce the number of non-Leaky by looking at each one individually.
 
I was misled by Nico's seemingly sensible regex here https://groups.google.com/a/chromium.org/d/msg/chromium-dev/OLS4JSZvowI/LCYcMRPfBAAJ ... but it's not multiline! There are many many many more than that, sadly.
Project Member

Comment 2 by bugdroid1@chromium.org, Mar 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9

commit 5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9
Author: scottmg <scottmg@chromium.org>
Date: Wed Mar 08 08:48:46 2017

Require explicit selection of traits for LazyInstance

This change requires the user of LazyInstance to explicitly select
either ::DestructorAtExit or ::Leaky. It seems clear that many users of
LazyInstance have just gone with default and are either unaware or
didn't consider that the default requires running an AtExit at process
shutdown.

As a first step, make this choice explicit, and update current users
to be ::DestructorAtExit to maintain current behaviour. Follow ups can
then attempt to consider individual switches from DestructorAtExit to
Leaky including reviewers with domain-specific knowledge.

i.e. No intended behaviour change from this CL.

R=thakis@chromium.org

Lots of TBRs for mechanical changes:
boliu: android_webview/
danakj: cc/
dmurph: storage/
jam: content/ ipc/, mojo/
jbauman: gpu/
jochen: gin/
oshima: chromeos/
raymes: ppapi/
rdevlin.cronin: extensions/
rockot: device/, services/
rogerta: google_apis/
rsleevi: net/, crypto/
sdefresne: components/, ios/
sergeyu: jingle/
slan: chromecast/
thakis: base/, chrome/, third_party/, tools/, ui/
vitalybuka: printing/
wez: remoting/

TBR=above
BUG=698982
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_cronet_tester;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_site_isolation;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2733283002
Cr-Commit-Position: refs/heads/master@{#455405}

[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/aw_cookie_access_policy.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/deferred_gpu_command_service.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/deferred_gpu_command_service.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/gl_view_renderer_manager.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/net/token_binding_manager.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/render_thread_manager.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/browser/scoped_app_gl_state_restore.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/lib/main/aw_main_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/native/aw_contents_io_thread_client_impl.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/native/aw_metrics_service_client_impl.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/android_webview/native/cookie_manager.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/android/jni_android.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/files/file_path_watcher_linux.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/i18n/number_formatting.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/lazy_instance.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/lazy_instance_unittest.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/metrics/statistics_recorder.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/metrics/user_metrics.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/process/process_linux.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/test/launcher/test_launcher.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/base/win/message_window.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/cc/layers/empty_content_layer_client.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/cc/layers/empty_content_layer_client.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/cc/test/fake_tile_manager.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/app/chrome_main_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/android/background_sync_launcher_android.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/android/background_sync_launcher_android.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/android/download/download_controller.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/android/ntp/ntp_snippets_launcher.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/android/ntp/ntp_snippets_launcher.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/android/webapps/single_tab_mode_tab_helper.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/autofill/validation_rules_storage_factory.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/autofill/validation_rules_storage_factory.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chrome_content_browser_client.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/app_mode/kiosk_app_manager.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/arc/intent_helper/arc_external_protocol_dialog.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/boot_times_recorder.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/extensions/gfx_utils.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/extensions/input_method_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/extensions/media_player_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/extensions/wallpaper_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/login/signin/merge_session_throttling_utils.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/login/ui/login_web_dialog.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/printer_detector/printer_detector_factory.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/printer_detector/printer_detector_factory.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/printing/cups_print_job_manager_factory.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/printing/cups_print_job_manager_factory.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/printing/printers_manager_factory.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/chromeos/printing/printers_manager_factory.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/devtools/device/usb/android_usb_device.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/download/download_prefs.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/activity_log/activity_log.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/activity_log_private/activity_log_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/autotest_private/autotest_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/bookmark_manager_private/bookmark_manager_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/braille_display_private/braille_display_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/commands/command_service.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/content_settings/content_settings_service.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/cookies/cookies_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/developer_private/developer_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/downloads/downloads_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_connection.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/extension_action/extension_action_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/feedback_private/feedback_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/font_settings/font_settings_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/history/history_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/hotword_private/hotword_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/identity/identity_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/image_writer_private/operation.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/image_writer_private/operation_manager.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/input_ime/input_ime_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/launcher_page/launcher_page_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/log_private/log_private_api_chromeos.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/mdns/mdns_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/media_galleries/media_galleries_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/messaging/incognito_connectability.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/messaging/message_service.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/omnibox/omnibox_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/preference/chrome_direct_setting_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/preference/preference_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/processes/processes_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/sessions/sessions_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/settings_overrides/settings_overrides_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/spellcheck/spellcheck_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/streams_private/streams_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/sync_file_system/extension_sync_event_observer.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/tabs/tabs_windows_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/blacklist.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/chrome_extension_host_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/chrome_extensions_browser_client.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/extension_commands_global_registry.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/extension_gcm_app_handler.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/extension_install_error_menu_item_id_provider.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/extension_message_bubble_controller.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/extension_web_ui_override_registrar.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/install_signer.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/plugin_manager.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/feedback/feedback_profile_observer.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/first_run/first_run.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/internal_auth.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media/router/media_router_factory.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media/router/media_router_factory.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media/router/offscreen_presentation_manager_factory.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media/router/offscreen_presentation_manager_factory.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media/webrtc/webrtc_browsertest_base.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media_galleries/chromeos/mtp_device_task_helper_map_service.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media_galleries/chromeos/mtp_device_task_helper_map_service.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media_galleries/fileapi/mtp_device_map_service.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media_galleries/fileapi/supported_audio_video_checker.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media_galleries/imported_media_gallery_registry.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media_galleries/win/portable_device_map_service.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/media_galleries/win/portable_device_map_service.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/net/sth_distributor_provider.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/performance_monitor/performance_monitor.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/performance_monitor/performance_monitor.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/previews/previews_service_factory.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/previews/previews_service_factory.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/printing/print_view_manager.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/resources_util.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/safe_browsing/safe_browsing_service.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/safe_browsing/threat_details.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/speech/extension_api/tts_extension_api.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/sync_file_system/logger.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/task_manager/sampling/task_manager_impl.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/task_manager/sampling/task_manager_impl.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/ui/app_list/arc/arc_app_icon.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/ui/extensions/extension_message_bubble_factory.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/ui/startup/startup_browser_creator.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/ui/views/harmony/harmony_layout_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/ui/views/harmony/layout_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/ui/webui/print_preview/print_preview_ui.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/update_client/chrome_update_query_params_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/browser/usb/usb_blocklist.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/common/chrome_paths.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/common/extensions/chrome_extensions_client.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/common/extensions/chrome_extensions_client.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/common/extensions/chrome_manifest_url_handlers.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/common/extensions/manifest_handlers/app_icon_color_info.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/common/extensions/manifest_handlers/app_launch_info.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/common/extensions/manifest_handlers/content_scripts_handler.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/common/extensions/manifest_handlers/linked_app_icons.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/installer/util/master_preferences.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/renderer/media/cast_session_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/renderer/media/cast_threads.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/renderer/pepper/pepper_flash_renderer_host.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/renderer/safe_browsing/phishing_classifier_delegate.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/service/cloud_print/cloud_print_token_store.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/test/base/web_ui_browser_test.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/test/chromedriver/server/chromedriver_server.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/test/chromedriver/session.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chrome/test/logging/win/test_log_collector.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromecast/base/chromecast_config_android.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromecast/base/chromecast_config_android.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromecast/base/metrics/grouped_histogram.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromecast/common/media/cast_media_client.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromecast/crash/app_state_tracker.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromecast/graphics/cast_vsync_settings.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromecast/graphics/cast_vsync_settings.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromecast/media/cma/backend/alsa/stream_mixer_alsa.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromeos/login_event_recorder.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromeos/process_proxy/process_proxy_registry.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/chromeos/process_proxy/process_proxy_registry.h
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/components/autofill/content/renderer/password_form_conversion_utils.cc
[modify] https://crrev.com/5e65e3a4fbb5d4815760fc9b31f3bb5fb81bfbc9/components/autofill/core/browser/country_names.cc
[modify] https://crrev.com/5e65e

Comment 3 by torne@chromium.org, Mar 8 2017

Cc: torne@chromium.org
Project Member

Comment 4 by bugdroid1@chromium.org, Mar 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eae0bca61d34738c1386c4d34ea4a3588b4dc8df

commit eae0bca61d34738c1386c4d34ea4a3588b4dc8df
Author: scottmg <scottmg@chromium.org>
Date: Wed Mar 08 22:36:03 2017

Change ui/base/l10n/formatter LazyInstance to Leaky

I don't believe destroying the FormatterContainer, or its contained
Formatter, or their contained icu::MessageFormat is important either at
process shutdown, or in between tests.

TEST=ui_base_unittests --gtest_repeat=100 --gtest_shuffle
R=jshin@chromium.org
BUG=698982

Review-Url: https://codereview.chromium.org/2742463002
Cr-Commit-Position: refs/heads/master@{#455561}

[modify] https://crrev.com/eae0bca61d34738c1386c4d34ea4a3588b4dc8df/ui/base/l10n/formatter.h
[modify] https://crrev.com/eae0bca61d34738c1386c4d34ea4a3588b4dc8df/ui/base/l10n/time_format.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Mar 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8319b23bcb1895fea5a4a308837c100beb42f068

commit 8319b23bcb1895fea5a4a308837c100beb42f068
Author: jbroman <jbroman@chromium.org>
Date: Wed Mar 08 22:53:29 2017

content: Use leaky LazyInstance for maps in render_view_impl.cc

BUG=698982

Review-Url: https://codereview.chromium.org/2737163002
Cr-Commit-Position: refs/heads/master@{#455572}

[modify] https://crrev.com/8319b23bcb1895fea5a4a308837c100beb42f068/content/renderer/render_view_impl.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Mar 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/298fdeb4da7e54f0c26e86e37a9460b401246c03

commit 298fdeb4da7e54f0c26e86e37a9460b401246c03
Author: danakj <danakj@chromium.org>
Date: Thu Mar 09 20:26:07 2017

Remove non-leaky LazyInstances in cc.

We do this by removing the LazyInstances entirely.

EmptyContentLayerClient was part of production build targets (?) but
only used by tests. Switched to the equally capable
FakeContentLayerClient.

Changed the LazyInstances in FakeTileManager to be static pointers.

R=vmpstr@chromium.org
BUG=698982
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2738613006
Cr-Commit-Position: refs/heads/master@{#455852}

[modify] https://crrev.com/298fdeb4da7e54f0c26e86e37a9460b401246c03/cc/BUILD.gn
[delete] https://crrev.com/11a12fd4575fef6f08ca5518ffc6714c7f41b615/cc/layers/empty_content_layer_client.cc
[delete] https://crrev.com/11a12fd4575fef6f08ca5518ffc6714c7f41b615/cc/layers/empty_content_layer_client.h
[modify] https://crrev.com/298fdeb4da7e54f0c26e86e37a9460b401246c03/cc/layers/picture_layer_unittest.cc
[modify] https://crrev.com/298fdeb4da7e54f0c26e86e37a9460b401246c03/cc/test/fake_tile_manager.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Mar 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6c77b2f4468702c9d4fc551d6e7bb3fbf25c2922

commit 6c77b2f4468702c9d4fc551d6e7bb3fbf25c2922
Author: danakj <danakj@chromium.org>
Date: Fri Mar 10 16:40:25 2017

base: Remove LazyInstance with AtExit from process_linux.cc

Replace it with a function static, as it has no destructor to run.

R=dcheng@chromium.org
BUG=698982

Review-Url: https://codereview.chromium.org/2736393004
Cr-Commit-Position: refs/heads/master@{#456079}

[modify] https://crrev.com/6c77b2f4468702c9d4fc551d6e7bb3fbf25c2922/base/process/process_linux.cc

Project Member

Comment 9 by bugdroid1@chromium.org, Mar 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5759cafbf041c1fdc2b26416b4644e52f7df6dfc

commit 5759cafbf041c1fdc2b26416b4644e52f7df6dfc
Author: danakj <danakj@chromium.org>
Date: Fri Mar 10 17:34:55 2017

Replace TestLaucher non-leaky LazyInstances with a static pointers.

This avoids running destructors at shutdown.

R=dcheng@chromium.org
BUG=698982

Review-Url: https://codereview.chromium.org/2736313002
Cr-Commit-Position: refs/heads/master@{#456092}

[modify] https://crrev.com/5759cafbf041c1fdc2b26416b4644e52f7df6dfc/base/test/launcher/test_launcher.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Jan 23 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1b97e93c5a1d0bc0ed2f84d0d34581eade8315c6

commit 1b97e93c5a1d0bc0ed2f84d0d34581eade8315c6
Author: Daniel Cheng <dcheng@chromium.org>
Date: Tue Jan 23 23:51:31 2018

Make DestructorAtExit LazyInstances leak.

This means that tests may no longer rely on LazyInstance<T> to clean
up global state between tests. Tests that depend on globals but need
a clean test environment should use explicit test hooks to reset this
state.

Only one test depends on DestructorAtExit for correct functionality.
cast_audio_backend_unittests creates several mocks that are owned by a
base::LazyInstance. Since Gmock verifies expectations in destructors,
switching all LazyInstances to leaky ones breaks this verification.
The solution is to manually verify and check the expectations at the
end of the test.

Note that while the mock objects are annotated as leaked for Gmock,
that does not mean the cast_audio_backend_unittests will leak
arbitrary amounts of memory. The test fixture already configures
StreamMixer for each test run; this setup will clear up any leftover
objects from the previous test.

DestructorAtExit will be removed in a followup.

Bug: 698982
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I822ce507dbb98067a788466e7c8fcc96c3a64ef9
Reviewed-on: https://chromium-review.googlesource.com/874994
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Kenneth MacKay <kmackay@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#531385}
[modify] https://crrev.com/1b97e93c5a1d0bc0ed2f84d0d34581eade8315c6/base/lazy_instance.h
[modify] https://crrev.com/1b97e93c5a1d0bc0ed2f84d0d34581eade8315c6/base/lazy_instance_unittest.cc
[modify] https://crrev.com/1b97e93c5a1d0bc0ed2f84d0d34581eade8315c6/chromecast/media/cma/backend/alsa/stream_mixer_unittest.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Jan 24 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0d4683df865710d6eedbef9e6bd75c401098fc25

commit 0d4683df865710d6eedbef9e6bd75c401098fc25
Author: Joe Downing <joedow@chromium.org>
Date: Wed Jan 24 01:32:38 2018

Revert "Make DestructorAtExit LazyInstances leak."

This reverts commit 1b97e93c5a1d0bc0ed2f84d0d34581eade8315c6.

Reason for revert: Speculative revert due to Linux TSAN unittest errors:
https://uberchromegw.corp.google.com/i/chromium.memory/builders/Linux%20TSan%20Tests/builds/17057

Original change's description:
> Make DestructorAtExit LazyInstances leak.
> 
> This means that tests may no longer rely on LazyInstance<T> to clean
> up global state between tests. Tests that depend on globals but need
> a clean test environment should use explicit test hooks to reset this
> state.
> 
> Only one test depends on DestructorAtExit for correct functionality.
> cast_audio_backend_unittests creates several mocks that are owned by a
> base::LazyInstance. Since Gmock verifies expectations in destructors,
> switching all LazyInstances to leaky ones breaks this verification.
> The solution is to manually verify and check the expectations at the
> end of the test.
> 
> Note that while the mock objects are annotated as leaked for Gmock,
> that does not mean the cast_audio_backend_unittests will leak
> arbitrary amounts of memory. The test fixture already configures
> StreamMixer for each test run; this setup will clear up any leftover
> objects from the previous test.
> 
> DestructorAtExit will be removed in a followup.
> 
> Bug: 698982
> Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
> Change-Id: I822ce507dbb98067a788466e7c8fcc96c3a64ef9
> Reviewed-on: https://chromium-review.googlesource.com/874994
> Commit-Queue: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: Kenneth MacKay <kmackay@chromium.org>
> Reviewed-by: Gabriel Charette <gab@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#531385}

TBR=dcheng@chromium.org,gab@chromium.org,kmackay@chromium.org

Change-Id: Ief1f9169caa0ff81e2c095df0a0520a71d7640a1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 698982
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Reviewed-on: https://chromium-review.googlesource.com/882506
Reviewed-by: Joe Downing <joedow@chromium.org>
Commit-Queue: Joe Downing <joedow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#531398}
[modify] https://crrev.com/0d4683df865710d6eedbef9e6bd75c401098fc25/base/lazy_instance.h
[modify] https://crrev.com/0d4683df865710d6eedbef9e6bd75c401098fc25/base/lazy_instance_unittest.cc
[modify] https://crrev.com/0d4683df865710d6eedbef9e6bd75c401098fc25/chromecast/media/cma/backend/alsa/stream_mixer_unittest.cc

FYI, we should be migrating to base::NoDestructor objects as function-local statics, as per base/lazy_instance.h.

Sign in to add a comment