ports/devel/android-tools-fastboot/files/patch-liblog_logger__write.cpp
Jan Beich eeef181460 devel/android-tools-adb: fix TEST=on after r527733
socket_spec_test.cpp:101: Failure
Expected equality of these values:
  5555
  get_host_socket_spec_port("vsock:5555", &error)
    Which is: -1

* thread #1, name = 'adb_test', stop reason = signal SIGILL: privileged instruction
    frame #0: 0x00000000003fc604 adb_test`GetThreadId() at logger_write.cpp:240:31
   237  #endif
   238
   239  // Copied from base/threads.cpp
-> 240  static uint64_t GetThreadId() {
   241  #if defined(__BIONIC__)
   242    return gettid();
   243  #elif defined(__APPLE__)
(lldb) bt
* thread #1, name = 'adb_test', stop reason = signal SIGILL: privileged instruction
  * frame #0: 0x00000000003fc604 adb_test`GetThreadId() at logger_write.cpp:240:31
    frame #1: 0x00000000003fc3ce adb_test`::__android_log_stderr_logger(logger_data=0x00007fffffffce60, message="foobar") at logger_write.cpp:274:18
    frame #2: 0x00000000003fc92a adb_test`::__android_log_write_logger_data(logger_data=0x00007fffffffce60, msg="foobar") at logger_write.cpp:329:3
    frame #3: 0x00000000003f6c44 adb_test`android::base::LogMessage::LogLine(file="logging_test.cpp", line=603, severity=ERROR, tag=0x0000000000000000, message="foobar") at logging.cpp:581:5
    frame #4: 0x00000000003f683d adb_test`android::base::LogMessage::~LogMessage(this=0x00007fffffffd000) at logging.cpp:542:7
    frame #5: 0x00000000004f76fe adb_test`TestLoggingInConstructor() at logging_test.cpp:603:3

* thread #1, name = 'adb_test', stop reason = signal SIGSEGV: invalid address (fault address: 0x14)
    frame #0: 0x00000000004c8dc8 adb_test`file_RemoveFileIfExists_EACCES_Test::TestBody(this=0x0000000800f91060) at file_test.cpp:247:19
   244    // root can bypass permission restrictions, so drop root.
   245    if (getuid() == 0) {
   246      passwd* shell = getpwnam("shell");
-> 247      setgid(shell->pw_gid);
   248      setuid(shell->pw_uid);
   249    }
   250
(lldb) bt
* thread #1, name = 'adb_test', stop reason = signal SIGSEGV: invalid address (fault address: 0x14)
  * frame #0: 0x00000000004c8dc8 adb_test`file_RemoveFileIfExists_EACCES_Test::TestBody(this=0x0000000800f91060) at file_test.cpp:247:19
    frame #1: 0x0000000800982d6e libgtest.so`void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(object=0x0000000800f91060, method=21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00, location="the test body")(), char const*) at gtest.cc:2433:10
    frame #2: 0x0000000800962399 libgtest.so`void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(object=0x0000000800f91060, method=21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00, location="the test body")(), char const*) at gtest.cc:2469:14
    frame #3: 0x0000000800942b43 libgtest.so`testing::Test::Run(this=0x0000000800f91060) at gtest.cc:2508:5
    frame #4: 0x0000000800943792 libgtest.so`testing::TestInfo::Run(this=0x0000000800fa3ba0) at gtest.cc:2684:11
    frame #5: 0x0000000800943e17 libgtest.so`testing::TestSuite::Run(this=0x0000000800fa34a0) at gtest.cc:2816:28
    frame #6: 0x0000000800950480 libgtest.so`testing::internal::UnitTestImpl::RunAllTests(this=0x0000000800fa4000) at gtest.cc:5338:44
    frame #7: 0x0000000800987bfe libgtest.so`bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(object=0x0000000800fa4000, method=40 00 95 00 08 00 00 00 00 00 00 00 00 00 00 00, location="auxiliary test code (environments or event listeners)")(), char const*) at gtest.cc:2433:10
    frame #8: 0x00000008009650a9 libgtest.so`bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(object=0x0000000800fa4000, method=40 00 95 00 08 00 00 00 00 00 00 00 00 00 00 00, location="auxiliary test code (environments or event listeners)")(), char const*) at gtest.cc:2469:14
    frame #9: 0x000000080094ffd4 libgtest.so`testing::UnitTest::Run(this=0x000000080099a0d8) at gtest.cc:4925:10
    frame #10: 0x0000000000543cf1 adb_test`RUN_ALL_TESTS() at gtest.h:2473:46
    frame #11: 0x0000000000543c70 adb_test`main(argc=1, argv=0x00007fffffffeae8) at test_main.cpp:24:10
    frame #12: 0x000000000031710f adb_test`_start(ap=<unavailable>, cleanup=<unavailable>) at crt1.c:76:7

PR:		245642
Submitted by:	Marcin Cieślak (based on)
2020-04-15 19:15:37 +00:00

36 lines
917 B
C++

--- liblog/logger_write.cpp.orig 2020-02-11 20:44:45 UTC
+++ liblog/logger_write.cpp
@@ -51,6 +51,16 @@
#include <syscall.h>
#elif defined(_WIN32)
#include <windows.h>
+#elif defined(__DragonFly__) || defined(__FreeBSD__)
+#include <pthread_np.h>
+#elif defined(__NetBSD__)
+#include <lwp.h>
+#elif defined(__OpenBSD__)
+#include <unistd.h>
+#elif defined(__sun)
+#include <thread.h>
+#else // fallback
+#include <stdint.h>
#endif
using android::base::ErrnoRestorer;
@@ -248,6 +258,16 @@ static uint64_t GetThreadId() {
return syscall(__NR_gettid);
#elif defined(_WIN32)
return GetCurrentThreadId();
+#elif defined(__DragonFly__) || defined(__FreeBSD__)
+ return pthread_getthreadid_np();
+#elif defined(__NetBSD__)
+ return _lwp_self();
+#elif defined(__OpenBSD__)
+ return getthrid();
+#elif defined(__sun)
+ return thr_self();
+#else // fallback
+ return (intptr_t) pthread_self();
#endif
}