diff --git a/gn/standalone/libc++/BUILD.gn b/gn/standalone/libc++/BUILD.gn
index 9b1515a..a8ccba1 100644
--- a/gn/standalone/libc++/BUILD.gn
+++ b/gn/standalone/libc++/BUILD.gn
@@ -37,8 +37,6 @@
       "dl",  # libdl: dynamic linking.
       "gcc_eh",  # gcc exception handling, required by libunwind.
     ]
-  } else {
-    libs = [ "atomic" ]
   }
 }
 
diff --git a/include/perfetto/ftrace_reader/ftrace_controller.h b/include/perfetto/ftrace_reader/ftrace_controller.h
index ce9c6cb..7de9e53 100644
--- a/include/perfetto/ftrace_reader/ftrace_controller.h
+++ b/include/perfetto/ftrace_reader/ftrace_controller.h
@@ -42,6 +42,9 @@
 
 const size_t kMaxSinks = 32;
 
+// Method of last resort to reset ftrace state.
+void HardResetFtraceState();
+
 class FtraceController;
 class ProtoTranslationTable;
 class CpuReader;
diff --git a/src/ftrace_reader/end_to_end_integrationtest.cc b/src/ftrace_reader/end_to_end_integrationtest.cc
index 8f4bee6..09e8336 100644
--- a/src/ftrace_reader/end_to_end_integrationtest.cc
+++ b/src/ftrace_reader/end_to_end_integrationtest.cc
@@ -166,6 +166,6 @@
   std::string output_as_text;
   printf("%s\n", output_as_text.c_str());
 }
-#endif  // BUILDFLAG(PERFETTO_OS_ANDROID)
+#endif  // PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
 
 }  // namespace perfetto
diff --git a/src/ftrace_reader/ftrace_controller.cc b/src/ftrace_reader/ftrace_controller.cc
index ee9252c..053eae6 100644
--- a/src/ftrace_reader/ftrace_controller.cc
+++ b/src/ftrace_reader/ftrace_controller.cc
@@ -22,6 +22,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/wait.h>
+#include <unistd.h>
 
 #include <array>
 #include <string>
@@ -107,8 +108,39 @@
   return status == 0;
 }
 
+void WriteToFile(const char* path, const char* str) {
+  int fd = open(path, O_WRONLY);
+  if (fd == -1)
+    return;
+  perfetto::base::ignore_result(write(fd, str, strlen(str)));
+  perfetto::base::ignore_result(close(fd));
+}
+
+void ClearFile(const char* path) {
+  int fd = open(path, O_WRONLY | O_TRUNC);
+  if (fd == -1)
+    return;
+  perfetto::base::ignore_result(close(fd));
+}
+
 }  // namespace
 
+// TODO(fmayer): Actually call this on shutdown.
+// Method of last resort to reset ftrace state.
+// We don't know what state the rest of the system and process is so as far
+// as possible avoid allocations.
+void HardResetFtraceState() {
+  WriteToFile("/sys/kernel/debug/tracing/tracing_on", "0");
+  WriteToFile("/sys/kernel/debug/tracing/buffer_size_kb", "4");
+  WriteToFile("/sys/kernel/debug/tracing/events/enable", "0");
+  ClearFile("/sys/kernel/debug/tracing/trace");
+
+  WriteToFile("/sys/kernel/tracing/tracing_on", "0");
+  WriteToFile("/sys/kernel/tracing/buffer_size_kb", "4");
+  WriteToFile("/sys/kernel/tracing/events/enable", "0");
+  ClearFile("/sys/kernel/tracing/trace");
+}
+
 // static
 // TODO(taylori): Add a test for tracing paths in integration tests.
 std::unique_ptr<FtraceController> FtraceController::Create(
diff --git a/src/ftrace_reader/ftrace_procfs_integrationtest.cc b/src/ftrace_reader/ftrace_procfs_integrationtest.cc
index 620cd87..e6f698e 100644
--- a/src/ftrace_reader/ftrace_procfs_integrationtest.cc
+++ b/src/ftrace_reader/ftrace_procfs_integrationtest.cc
@@ -22,6 +22,7 @@
 #include "ftrace_procfs.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
+#include "perfetto/ftrace_reader/ftrace_controller.h"
 
 using testing::HasSubstr;
 using testing::Not;
@@ -60,16 +61,31 @@
 
 }  // namespace
 
-// TODO(lalitm): reenable these thests (see b/72306171).
-TEST(FtraceProcfsIntegrationTest, DISABLED_CreateWithGoodPath) {
+// TODO(lalitm): reenable these tests (see b/72306171).
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_CreateWithGoodPath CreateWithGoodPath
+#else
+#define MAYBE_CreateWithGoodPath DISABLED_CreateWithGoodPath
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_CreateWithGoodPath) {
   EXPECT_TRUE(FtraceProcfs::Create(kTracingPath));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_CreateWithBadPath) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_CreateWithBadPath CreateWithBadPath
+#else
+#define MAYBE_CreateWithBadPath DISABLED_CreateWithBadath
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_CreateWithBadPath) {
   EXPECT_FALSE(FtraceProcfs::Create(kTracingPath + std::string("bad_path")));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_ClearTrace) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_ClearTrace ClearTrace
+#else
+#define MAYBE_ClearTrace DISABLED_ClearTrace
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_ClearTrace) {
   FtraceProcfs ftrace(kTracingPath);
   ResetFtrace(&ftrace);
   ftrace.WriteTraceMarker("Hello, World!");
@@ -77,14 +93,24 @@
   EXPECT_THAT(GetTraceOutput(), Not(HasSubstr("Hello, World!")));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_TraceMarker) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_TraceMarker TraceMarker
+#else
+#define MAYBE_TraceMarker DISABLED_TraceMarker
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_TraceMarker) {
   FtraceProcfs ftrace(kTracingPath);
   ResetFtrace(&ftrace);
   ftrace.WriteTraceMarker("Hello, World!");
   EXPECT_THAT(GetTraceOutput(), HasSubstr("Hello, World!"));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_EnableDisableEvent) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_EnableDisableEvent EnableDisableEvent
+#else
+#define MAYBE_EnableDisableEvent DISABLED_EnableDisableEvent
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_EnableDisableEvent) {
   FtraceProcfs ftrace(kTracingPath);
   ResetFtrace(&ftrace);
   ftrace.EnableEvent("sched", "sched_switch");
@@ -97,7 +123,12 @@
   EXPECT_THAT(GetTraceOutput(), Not(HasSubstr("sched_switch")));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_EnableDisableTracing) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_EnableDisableTracing EnableDisableTracing
+#else
+#define MAYBE_EnableDisableTracing DISABLED_EnableDisableTracing
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_EnableDisableTracing) {
   FtraceProcfs ftrace(kTracingPath);
   ResetFtrace(&ftrace);
   EXPECT_TRUE(ftrace.IsTracingEnabled());
@@ -113,25 +144,45 @@
   EXPECT_THAT(GetTraceOutput(), HasSubstr("After"));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_ReadFormatFile) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_ReadFormatFile ReadFormatFile
+#else
+#define MAYBE_ReadFormatFile DISABLED_ReadFormatFile
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_ReadFormatFile) {
   FtraceProcfs ftrace(kTracingPath);
   std::string format = ftrace.ReadEventFormat("ftrace", "print");
   EXPECT_THAT(format, HasSubstr("name: print"));
   EXPECT_THAT(format, HasSubstr("field:char buf"));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_ReadAvailableEvents) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_ReadAvailableEvents ReadAvailableEvents
+#else
+#define MAYBE_ReadAvailableEvents DISABLED_ReadAvailableEvents
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_ReadAvailableEvents) {
   FtraceProcfs ftrace(kTracingPath);
   std::string format = ftrace.ReadAvailableEvents();
   EXPECT_THAT(format, HasSubstr("sched:sched_switch"));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_CanOpenTracePipeRaw) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_CanOpenTracePipeRaw CanOpenTracePipeRaw
+#else
+#define MAYBE_CanOpenTracePipeRaw DISABLED_CanOpenTracePipeRaw
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_CanOpenTracePipeRaw) {
   FtraceProcfs ftrace(kTracingPath);
   EXPECT_TRUE(ftrace.OpenPipeForCpu(0));
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_Clock) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_Clock Clock
+#else
+#define MAYBE_Clock DISABLED_Clock
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_Clock) {
   FtraceProcfs ftrace(kTracingPath);
   std::set<std::string> clocks = ftrace.AvailableClocks();
   EXPECT_THAT(clocks, Contains("local"));
@@ -143,7 +194,12 @@
   EXPECT_EQ(ftrace.GetClock(), "local");
 }
 
-TEST(FtraceProcfsIntegrationTest, DISABLED_CanSetBufferSize) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_CanSetBufferSize CanSetBufferSize
+#else
+#define MAYBE_CanSetBufferSize DISABLED_CanSetBufferSize
+#endif
+TEST(FtraceProcfsIntegrationTest, MAYBE_CanSetBufferSize) {
   FtraceProcfs ftrace(kTracingPath);
   EXPECT_TRUE(ftrace.SetCpuBufferSizeInPages(4ul));
   EXPECT_EQ(ReadFile("buffer_size_kb"), "16\n");  // (4096 * 4) / 1024
@@ -151,4 +207,26 @@
   EXPECT_EQ(ReadFile("buffer_size_kb"), "20\n");  // (4096 * 5) / 1024
 }
 
+TEST(FtraceProcfsIntegrationTest, DISABLED_FtraceControllerHardReset) {
+  FtraceProcfs ftrace(kTracingPath);
+  ResetFtrace(&ftrace);
+
+  ftrace.SetCpuBufferSizeInPages(4ul);
+  ftrace.EnableTracing();
+  ftrace.EnableEvent("sched", "sched_switch");
+  ftrace.WriteTraceMarker("Hello, World!");
+
+  EXPECT_EQ(ReadFile("buffer_size_kb"), "16\n");
+  EXPECT_EQ(ReadFile("tracing_on"), "1\n");
+  EXPECT_EQ(ReadFile("events/enable"), "X\n");
+  EXPECT_THAT(GetTraceOutput(), HasSubstr("Hello"));
+
+  HardResetFtraceState();
+
+  EXPECT_EQ(ReadFile("buffer_size_kb"), "4\n");
+  EXPECT_EQ(ReadFile("tracing_on"), "0\n");
+  EXPECT_EQ(ReadFile("events/enable"), "0\n");
+  EXPECT_THAT(GetTraceOutput(), Not(HasSubstr("Hello")));
+}
+
 }  // namespace perfetto
diff --git a/src/traced/probes/ftrace_producer.h b/src/traced/probes/ftrace_producer.h
index 27c292a..95c9a99 100644
--- a/src/traced/probes/ftrace_producer.h
+++ b/src/traced/probes/ftrace_producer.h
@@ -60,8 +60,11 @@
 
    private:
     std::unique_ptr<FtraceSink> sink_ = nullptr;
-    TraceWriter::TracePacketHandle trace_packet_;
     std::unique_ptr<TraceWriter> writer_;
+
+    // Keep this after the TraceWriter because TracePackets must not outlive
+    // their originating writer.
+    TraceWriter::TracePacketHandle trace_packet_;
   };
 
   enum State {
diff --git a/src/tracing/core/trace_writer_impl.cc b/src/tracing/core/trace_writer_impl.cc
index f38128e..3bd4199 100644
--- a/src/tracing/core/trace_writer_impl.cc
+++ b/src/tracing/core/trace_writer_impl.cc
@@ -18,6 +18,7 @@
 
 #include <string.h>
 
+#include <algorithm>
 #include <type_traits>
 #include <utility>
 
diff --git a/test/AndroidTest.xml b/test/AndroidTest.xml
index 3f2a230..8f529af 100644
--- a/test/AndroidTest.xml
+++ b/test/AndroidTest.xml
@@ -21,10 +21,7 @@
         <option name="push" value="perfetto_unittests->/data/local/tmp/perfetto_unittests" />
         <option name="push" value="perfetto_integrationtests->/data/local/tmp/perfetto_integrationtests" />
     </target_preparer>
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="setprop persist.traced.enable 1" />
-        <option name="teardown-command" value="setprop persist.traced.enable 0" />
-    </target_preparer>
+    <option name="post-boot-command" value="setprop persist.traced.enable 1" />
     <test class="com.android.tradefed.testtype.GTest" >
       <option name="native-test-device-path" value="/data/local/tmp/perfetto_unittests" />
       <option name="module-name" value="perfetto_unittests" />
diff --git a/test/end_to_end_integrationtest.cc b/test/end_to_end_integrationtest.cc
index f881cc3..deb1a59 100644
--- a/test/end_to_end_integrationtest.cc
+++ b/test/end_to_end_integrationtest.cc
@@ -113,16 +113,19 @@
   };
 };
 
-// TODO(lalitm): reenable this when we have a solution for running ftrace
-// on travis.
-TEST_F(PerfettoTest, DISABLED_TestFtraceProducer) {
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
+#define MAYBE_TestFtraceProducer TestFtraceProducer
+#else
+#define MAYBE_TestFtraceProducer DISABLED_TestFtraceProducer
+#endif
+TEST_F(PerfettoTest, MAYBE_TestFtraceProducer) {
   base::TestTaskRunner task_runner;
   auto finish = task_runner.CreateCheckpoint("no.more.packets");
 
   // Setip the TraceConfig for the consumer.
   TraceConfig trace_config;
   trace_config.add_buffers()->set_size_kb(4096 * 10);
-  trace_config.set_duration_ms(200);
+  trace_config.set_duration_ms(3000);
 
   // Create the buffer for ftrace.
   auto* ds_config = trace_config.add_data_sources()->mutable_config();
