Commit Graph

13003 Commits

Author SHA1 Message Date
Christopher Ferris 2d09171758 Modify the code to avoid potential deadlocks.
If the signal to dump a thread is never delivered, then it's
possible for a deadlock. The signal handler is responsible for
unlocking and deleting the ThreadEntry created for the pid/tid
combination. This means if the signal is lost, the ThreadEntry
gets stuck locked and never deleted. If a second attempt to get
a backtrace of this thread occurs, there is a deadlock.

Also, decrease the timeout from 10 seconds to 5 seconds. The original
10 seconds was because the unwind was actually done in the signal
handler. Now the signal handler does nothing but copy the ucontext
structure and let the caller do the unwind.

Bug: 21086132
Change-Id: Idc735dbf6147ec879d35bd4f034c5d227e26a98d
2015-06-01 13:51:51 -07:00
Mark Salyzyn 5921276a16 logd: KISS & fix preserve a day
Code in 833a9b1e38 was borken,
simpler approach is to simply check last entry (to save a
syscall) minus EXPIRE_HOUR_THRESHOLD. This does make longer logs
less likely to call upon the spam detection than the algorithm
being replaced, but sadly we ended up with a log entry in the
future at the beginning of the logs confounding the previous
algorithm.

Bug: 21555259
Change-Id: I04fad67e95c8496521dbabb73b5f32c19d6a16c2
2015-06-01 13:06:35 -07:00
Mark Salyzyn 5392aac95d logd: deal with sloppy leading expire messages
The odds of chatty content also leading the logs is pretty high eg:

 1799 12017 I logd: uid=10007 chatty comm=Binder_B, expire 4 lines
 1799  1829 I logd: uid=10007 chatty comm=Binder_2, expire 4 lines
 1919 20637 I logd: uid=10007 chatty comm=m.sersistent, expire 1 line
 1919 20638 I logd: uid=10007 chatty comm=s.persistent, expire 1 line
 1919  2316 I logd: uid=10007 chatty comm=UlrDispatch, expire 4 lines
19379 20634 I logd: uid=10045 chatty, expire 14 lines
19379 19388 I logd: uid=10045 chatty comm=lizerDaemon, expire 4 lines
  591  4396 I logd: uid=1000 chatty comm=Thread-220, expire 5 lines
  591  1377 I logd: uid=1000 chatty comm=Thread-92, expire 4 lines
 1919  2267 I logd: uid=10007 chatty comm=WifiScanner, expire 4 lines
  591  4397 I logd: uid=1000 chatty comm=DhcpClient, expire 4 lines
  591  4398 I logd: uid=1000 chatty comm=Thread-222, expire 4 lines
  226   580 D CommandListener: Setting iface cfg

Change-Id: I5ab24bc7bf5d2690bae7e789831b07f23ff8bcc6
2015-06-01 13:04:09 -07:00
Elliott Hughes ce817c38d2 Merge "Fix error handling/reporting for "adb forward" and "adb reverse"." 2015-05-30 01:29:20 +00:00
Evgeniy Stepanov 5788769ddc Merge "Revert "Fix ODR issues in ART."" 2015-05-30 01:16:54 +00:00
Elliott Hughes 424af02f36 Fix error handling/reporting for "adb forward" and "adb reverse".
We really need better infrastructure for parsing adb subcommands, but
in the meantime...

At least this cleans up a little more of the implementation too.

Bug: http://b/20736014
Change-Id: I76209847da3724906c71924017bcb69fa31e0b49
2015-05-29 18:03:57 -07:00
Evgeniy Stepanov a8cc2081b4 Revert "Fix ODR issues in ART."
Fails build on Mac.

This reverts commit 2148a1243e.

Change-Id: Ib4f0ba0b0a42500f20b7d73ca91363477fe3d093
2015-05-30 00:47:30 +00:00
Arman Uguray 0aee2ac3a0 system/audio.h: Make function inline
This patch makes the audio_device_address_to_parameter inline. All of the other
helpers defined in this header are inline functions except for this one and this
causes compile failures when -Werror=unused-function is used.

BUG=21339022

Change-Id: I7db58bf7bed3b89b6752ec2cd2c1f358ba2a4d89
2015-05-29 16:12:31 -07:00
Evgenii Stepanov dd50edcbe7 Merge "Fix ODR issues in ART." 2015-05-29 17:55:02 +00:00
Christopher Ferris a684d9dad5 Merge "Refactor dump_memory function." 2015-05-28 18:02:10 +00:00
Evgenii Stepanov 2148a1243e Fix ODR issues in ART.
Linking against both libziparchive-host and libz-host results in
libz loaded twice (because it is also linked statically in
libziparchive).

bug: 21365909

Change-Id: Ie924e0b38e4c0811daff06e7c0bfed048e7ca82f
2015-05-28 10:53:23 -07:00
Mark Salyzyn 4cc6e2e33f Merge "init: expand_props on trigger" 2015-05-28 15:52:25 +00:00
Than McIntosh f166e38b82 Merge "Move perfprofd to late_start class." 2015-05-28 13:30:35 +00:00
Christopher Ferris e8bc77eb84 Refactor dump_memory function.
- Add dumping memory around registers for x86/x86_64.
- Add unit tests for new dump_memory function.
- Cleanup all of the machine.cpp files.
- Increase the high address check for 32 bit, and decrease the high
  address allowed for 64 bit slightly to match mips64.

Bug: 21206576
Change-Id: I6f75141f3282db48b10f7c695a1cf2eb75a08351
2015-05-27 17:21:38 -07:00
Mark Salyzyn dd0e3162a5 init: expand_props on trigger
Bug: 19608716
Change-Id: Ifce8bfde04f8e6f707245e0b53400072d94447b2
2015-05-27 14:06:28 -07:00
Elliott Hughes 3464c77b8d Merge "Don't use TEMP_FAILURE_RETRY on close in system/core." 2015-05-27 20:24:08 +00:00
Than McIntosh e8efd0d6bf Move perfprofd to late_start class.
Bug: http://b/19483574
Change-Id: I88649b50b95cbddb7d0671a5499232cbef156c48
2015-05-27 14:02:11 -04:00
Mark Salyzyn 62d6a2a921 logd: test modernization
Bug: 19603976
Change-Id: Ie920c128e7e6a436fea7a96c7d68bc39e13a2ad4
2015-05-26 12:24:51 -07:00
Spencer Low 62b6b4a1ea adb: win32: get test_adb.py running and passing 100%
* Use posixpath instead of os.path, because os.path uses '\' instead of
'/' when running on Windows.

* tempfile.NamedTemporaryFile() does not work right on Windows because
it holds the file open, preventing other processes from accessing the
same file (https://bugs.python.org/issue14243). To work-around this, use
the mechanical transformation described at
http://stackoverflow.com/questions/15169101/how-to-create-a-temporary-file-that-can-be-read-by-a-subprocess

* Use pipes.quote() to quote path arguments, to prevent C:\foo\bar from
turning into C:foobar.

* Open files in binary mode with "b".

* Fix line-ending test to allow for \r\n on Windows, but to still test
for adbd incorrectly sending \r\n (which is then translated to \r\r\n).

Change-Id: Ib6ba94b919b747a878ba3ab54a4dea0801f76947
Signed-off-by: Spencer Low <CompareAndSwap@gmail.com>
2015-05-24 23:26:05 -07:00
Spencer Low 6ac5d7dc56 adb: fix adb_close() vs. unix_close() usage
Document the differences between adb_*() and unix_*() in the function
prototypes in sysdeps.h. See the file for the details (CR/LF
translation, well-known file descriptors, etc.).

Fix adb_read(), adb_write(), and adb_close() calls that should really be
unix_read(), unix_write(), and unix_close(). Note that this should have
no impact on unix because on unix, unix_read/unix_write/unix_close are
macros that map to adb_read/adb_write/adb_close.

Improve sysdeps_win32.cpp file descriptor diagnostic logging to output
the name of the function that was passed a bad file descriptor.

Change-Id: I0a1d9c28772656c80bcc303ef8b61fccf4cd637c
Signed-off-by: Spencer Low <CompareAndSwap@gmail.com>
2015-05-22 20:20:49 -07:00
Paul Lawrence 7c7895755c Merge "Revert "Set up crypto for user directories in init."" 2015-05-22 19:19:14 +00:00
Paul Lawrence 2e24bcfdce Revert "Set up crypto for user directories in init."
Causes a boot loop in Shamu

This reverts commit ce6f716096.

Bug: 21396871
Change-Id: I9709053c589807d4530a3a99bd84e5b3177316cd
2015-05-22 18:32:45 +00:00
Dan Albert 0211d36054 Merge "Generalize Join to work for any container/element." 2015-05-22 17:15:11 +00:00
Dan Albert e0da8a1d37 Generalize Join to work for any container/element.
This is more scalable than explicitly instantiating templates for the
cross product of containers and element types.

Specifically I'm adding this so I can join an unordered_set in adb.

Change-Id: I0055f3390a0ff26a886a0d41bbf0d4fe3d210f9c
2015-05-22 10:07:06 -07:00
Dan Albert 3ff23e2461 Merge "Improve logging." 2015-05-21 23:26:36 +00:00
Dan Albert 9313c0df20 Improve logging.
Any output from the LOG family will now go to stderr and logcat on the
device. stderr is usually redirected to a log file, but that is now
inhibited for adbd if being run from a tty (useful when debugging with
the serial console).

This also fixes sending logs to the file on device for the trace mask
of "all". The "all" tag was specifically handled to return early from
the function, preventing the file initialization from happening.

Change-Id: Id253577bfd1500fbce92dbfba0f9be23dbfd5ee4
2015-05-21 16:25:57 -07:00
Dan Albert 36473768ef Merge "Clean up adb_trace_init." 2015-05-21 23:03:50 +00:00
Dan Albert db037bcd22 Merge "Make atransport be a real class." 2015-05-21 22:53:40 +00:00
Dan Albert c7915a3470 Make atransport be a real class.
Using non-POD types in atransport means we'll need to start treating
it as a real class (specifically with regards to new/delete rather
than malloc/free).

I've also cleaned up the home grown linked lists for transport_list
and pending_list to just be std::lists. We might want to refactor that
again to be an std::unordered_map keyed on serial, since that seems to
be a common way to search it.

Change-Id: I7f5e23cdc47944a9278099723ca029585fe52105
2015-05-21 15:49:05 -07:00
Dan Albert 9dd0914ac9 Merge "Turn on -Wextra." 2015-05-21 22:38:40 +00:00
Dan Albert 23fee8fcf5 Turn on -Wextra.
Change-Id: I3cddd6d949fdfa79312246670c37475276734f41
2015-05-21 15:15:11 -07:00
Dan Albert e246219d0c Clean up adb_trace_init.
Old code was a mess for splitting a string and then searching a list
when they really wanted a map.

To more closely match ANDROID_LOG_TAG, only use a space separated list
rather than space/colon/semi-colon/comma.

Change-Id: I915ff4968e42d5f8dec1b43b6eacc0c8d7b44d7b
2015-05-21 15:03:44 -07:00
Paul Crowley 7f623decf3 Merge "Set up crypto for user directories in init." 2015-05-21 21:34:12 +00:00
Mark Salyzyn c5bf3b8304 logd: whitelist should not preserve expire messages
Change-Id: I56275c73191b96aa21e7b4049d401e1f44211f9b
2015-05-21 13:01:56 -07:00
Andreas Gampe 02b29c49d4 Merge "LibNativeBridge: Version 2" 2015-05-21 00:21:02 +00:00
Dan Albert b7930843d3 Merge "adb / libbase: clean up NOGDI and evil ERROR macro" 2015-05-20 19:45:49 +00:00
Spencer Low ac3f7d9a78 adb / libbase: clean up NOGDI and evil ERROR macro
Instead of defining and undefining NOGDI:

1. Always #include "base/logging.h" after #include <windows.h>.
Unfortunately, I could not find an easy way to give the user a
warning/error if they include in the wrong order.

2. base/logging.h does #undef ERROR to undefine the evil ERROR macro
that is from another era and probably a bad idea to begin with.

Change-Id: I995d89620611e849af9d7ec47eb55fc0512377f2
Signed-off-by: Spencer Low <CompareAndSwap@gmail.com>
2015-05-20 12:25:19 -07:00
Mark Salyzyn 9ab8c97331 Merge "logd: worst-UID only to preserve a day" 2015-05-20 17:00:10 +00:00
Mark Salyzyn 833a9b1e38 logd: worst-UID only to preserve a day
Do not invoke worst-UID pruning in the face of other
UIDs logs that are more than a day old, switch to
pruning oldest only.

Change-Id: Icf988b8d5458400a660d0f8e9d2df3f9d9a4c2d9
2015-05-20 09:47:54 -07:00
Nick Kralevich 6a8b7b65f5 Merge "Don't use TEMP_FAILURE_RETRY on close()" 2015-05-20 16:04:37 +00:00
Nick Kralevich 95db36e128 Don't use TEMP_FAILURE_RETRY on close()
See https://lkml.org/lkml/2005/9/10/129 for details.

Bug: 20501816
Change-Id: I38bf5052f44034c6f866d10d7d07187f0053a7a1
2015-05-20 09:02:29 -07:00
Paul Crowley ce6f716096 Set up crypto for user directories in init.
Depends on https://android-review.googlesource.com/#/c/147911/

Bug: 19704432
Change-Id: Ie59c6b67f73c1cadd86e69d3c9673ddaddb49a7e
2015-05-20 08:28:21 +01:00
Nick Kralevich fe5b251329 Merge "klog: don't unconditionally call mknod()" 2015-05-19 22:01:06 +00:00
Badhri Jagan Sridharan 32685944b7 Merge "fastboot: Add support for fastboot flashing commands" 2015-05-19 17:41:39 +00:00
Nick Kralevich 4d32a486fe klog: don't unconditionally call mknod()
If /dev/kmsg already exists, it's unnecessary for klog_init()
to create it's own copy. This avoids needing to grant the mknod
permission to everyone who uses kmsg. Typically the only time
/dev/kmsg doesn't exist is before ueventd starts.

Bug: 21242418
Change-Id: I0c88d80feca6899fcdbc8c9f2f99448ee0a3422d
2015-05-18 18:43:28 -07:00
Dan Albert d92fd41f69 Merge "Make connection states a proper type." 2015-05-19 00:29:54 +00:00
Dan Albert dcd78a15d0 Make connection states a proper type.
Change-Id: I809f9b327c832b88dd63151bf7dcb012d88e81c4
2015-05-18 17:10:33 -07:00
Dan Albert 155f7ac796 Merge "Ignore whitespace/indent issues from cpplint." 2015-05-18 23:59:55 +00:00
Dan Albert 075e8608a7 Ignore whitespace/indent issues from cpplint.
Unfortunately this lint check also fires when public/private are not
indented by a single space. The indentation format in adb does not
match google style, so that's not going to happen.

Change-Id: I35e5654a2359222bb274ac5fb2961aee6a3a280f
2015-05-18 16:49:07 -07:00
Elliott Hughes 917b455ee7 Merge "Revert "Switch to toybox ls."" 2015-05-16 06:28:34 +00:00