update_engine: Fix a memory access violation

Somewhere down in HttpFetcher there is a pointer to
ChromeBrowserProxyResolver. But the actual object gets deleted before
ActionProcessor is deleted. But ActionProcessor's dtor makes calls that
sometimes eventually gets into the instance of ChromeBrowserproxyresolver and we
get a memory violation.

For now just declare ChromeBrowserProxyResolver before ActionProcessor so it
still exists when the ActionProcessor uses it. Later use shared_ptr to properly
handle it.

BUG=chromium:915922
TEST=cros flash
TEST=Instrumented the dtors and manually stopped the update_engine process to
see the order of dtors are correct.

Change-Id: Ie9fa654103605f04c82521c29614dbcd4fb083e8
Reviewed-on: https://chromium-review.googlesource.com/1388105
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Sen Jiang <senj@chromium.org>
2 files changed
tree: c0013586da2152616a43a06557ba946ed2e1d3b9
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. fuzz/
  6. init/
  7. payload_consumer/
  8. payload_generator/
  9. sample_images/
  10. scripts/
  11. update_manager/
  12. update_payload_key/
  13. .clang-format
  14. .gitignore
  15. Android.bp
  16. Android.mk
  17. binder_service_android.cc
  18. binder_service_android.h
  19. binder_service_brillo.cc
  20. binder_service_brillo.h
  21. boot_control_android.cc
  22. boot_control_android.h
  23. boot_control_chromeos.cc
  24. boot_control_chromeos.h
  25. boot_control_chromeos_unittest.cc
  26. boot_control_recovery.cc
  27. boot_control_recovery.h
  28. boot_control_recovery_stub.cc
  29. certificate_checker.cc
  30. certificate_checker.h
  31. certificate_checker_unittest.cc
  32. chrome_browser_proxy_resolver.cc
  33. chrome_browser_proxy_resolver.h
  34. COMMIT-QUEUE.ini
  35. common_service.cc
  36. common_service.h
  37. common_service_unittest.cc
  38. connection_manager.cc
  39. connection_manager.h
  40. connection_manager_android.cc
  41. connection_manager_android.h
  42. connection_manager_interface.h
  43. connection_manager_unittest.cc
  44. connection_utils.cc
  45. connection_utils.h
  46. CPPLINT.cfg
  47. daemon.cc
  48. daemon.h
  49. daemon_state_android.cc
  50. daemon_state_android.h
  51. daemon_state_interface.h
  52. dbus_connection.cc
  53. dbus_connection.h
  54. dbus_service.cc
  55. dbus_service.h
  56. dbus_test_utils.h
  57. dlcservice_chromeos.cc
  58. dlcservice_chromeos.h
  59. fake_file_writer.h
  60. fake_p2p_manager.h
  61. fake_p2p_manager_configuration.h
  62. fake_shill_proxy.cc
  63. fake_shill_proxy.h
  64. fake_system_state.cc
  65. fake_system_state.h
  66. generate_pc_file.sh
  67. hardware_android.cc
  68. hardware_android.h
  69. hardware_chromeos.cc
  70. hardware_chromeos.h
  71. hardware_chromeos_unittest.cc
  72. image_properties.h
  73. image_properties_android.cc
  74. image_properties_android_unittest.cc
  75. image_properties_chromeos.cc
  76. image_properties_chromeos_unittest.cc
  77. libcurl_http_fetcher.cc
  78. libcurl_http_fetcher.h
  79. libupdate_engine-client-test.pc.in
  80. libupdate_engine-client.pc.in
  81. local_coverage_rate
  82. main.cc
  83. metrics_constants.h
  84. metrics_reporter_android.cc
  85. metrics_reporter_android.h
  86. metrics_reporter_interface.h
  87. metrics_reporter_omaha.cc
  88. metrics_reporter_omaha.h
  89. metrics_reporter_omaha_unittest.cc
  90. metrics_reporter_stub.cc
  91. metrics_reporter_stub.h
  92. metrics_utils.cc
  93. metrics_utils.h
  94. metrics_utils_unittest.cc
  95. mock_certificate_checker.h
  96. mock_connection_manager.h
  97. mock_file_writer.h
  98. mock_metrics_reporter.h
  99. mock_omaha_request_params.h
  100. mock_p2p_manager.h
  101. mock_payload_state.h
  102. mock_power_manager.h
  103. mock_proxy_resolver.h
  104. mock_service_observer.h
  105. mock_update_attempter.h
  106. MODULE_LICENSE_APACHE2
  107. network_selector.h
  108. network_selector_android.cc
  109. network_selector_android.h
  110. network_selector_interface.h
  111. network_selector_stub.cc
  112. network_selector_stub.h
  113. NOTICE
  114. omaha_request_action.cc
  115. omaha_request_action.h
  116. omaha_request_action_fuzzer.cc
  117. omaha_request_action_unittest.cc
  118. omaha_request_params.cc
  119. omaha_request_params.h
  120. omaha_request_params_unittest.cc
  121. omaha_response.h
  122. omaha_response_handler_action.cc
  123. omaha_response_handler_action.h
  124. omaha_response_handler_action_unittest.cc
  125. omaha_utils.cc
  126. omaha_utils.h
  127. omaha_utils_unittest.cc
  128. OWNERS
  129. p2p_manager.cc
  130. p2p_manager.h
  131. p2p_manager_unittest.cc
  132. parcelable_update_engine_status.cc
  133. parcelable_update_engine_status.h
  134. parcelable_update_engine_status_unittest.cc
  135. payload_state.cc
  136. payload_state.h
  137. payload_state_interface.h
  138. payload_state_unittest.cc
  139. power_manager_android.cc
  140. power_manager_android.h
  141. power_manager_chromeos.cc
  142. power_manager_chromeos.h
  143. power_manager_interface.h
  144. PRESUBMIT.cfg
  145. PREUPLOAD.cfg
  146. proxy_resolver.cc
  147. proxy_resolver.h
  148. proxy_resolver_unittest.cc
  149. pylintrc
  150. real_system_state.cc
  151. real_system_state.h
  152. run_unittests
  153. sample_omaha_v3_response.xml
  154. service_delegate_android_interface.h
  155. service_observer_interface.h
  156. shill_proxy.cc
  157. shill_proxy.h
  158. shill_proxy_interface.h
  159. sideload_main.cc
  160. system_state.h
  161. tar_bunzip2.gypi
  162. test_http_server.cc
  163. test_subprocess.cc
  164. testrunner.cc
  165. unittest_key.pem
  166. unittest_key2.pem
  167. update_attempter.cc
  168. update_attempter.h
  169. update_attempter_android.cc
  170. update_attempter_android.h
  171. update_attempter_android_unittest.cc
  172. update_attempter_unittest.cc
  173. update_boot_flags_action.cc
  174. update_boot_flags_action.h
  175. update_boot_flags_action_unittest.cc
  176. update_engine-client.gyp
  177. update_engine.conf
  178. update_engine.gyp
  179. update_engine.rc
  180. update_engine_client.cc
  181. update_engine_client_android.cc
  182. update_metadata.proto
  183. update_status_utils.cc
  184. update_status_utils.h
  185. UpdateEngine.conf
  186. utils_android.cc
  187. utils_android.h