diff options
-rw-r--r-- | runtime/debugger.cc | 15 | ||||
-rwxr-xr-x | test/1940-ddms-ext/check | 21 | ||||
-rw-r--r-- | test/1940-ddms-ext/expected_error.txt | 4 | ||||
-rwxr-xr-x | test/1940-ddms-ext/remove_error.py | 38 |
4 files changed, 9 insertions, 69 deletions
diff --git a/runtime/debugger.cc b/runtime/debugger.cc index 99a4c77979..4a9449640b 100644 --- a/runtime/debugger.cc +++ b/runtime/debugger.cc @@ -4354,9 +4354,11 @@ bool Dbg::DdmHandleChunk(JNIEnv* env, WellKnownClasses::org_apache_harmony_dalvik_ddmc_DdmServer_dispatch, type, dataArray.get(), 0, data.size())); if (env->ExceptionCheck()) { - LOG(INFO) << StringPrintf("Exception thrown by dispatcher for 0x%08x", type); - env->ExceptionDescribe(); - env->ExceptionClear(); + Thread* self = Thread::Current(); + ScopedObjectAccess soa(self); + LOG(INFO) << StringPrintf("Exception thrown by dispatcher for 0x%08x", type) << std::endl + << self->GetException()->Dump(); + self->ClearException(); return false; } @@ -4400,10 +4402,11 @@ bool Dbg::DdmHandleChunk(JNIEnv* env, reinterpret_cast<jbyte*>(out_data->data())); if (env->ExceptionCheck()) { + Thread* self = Thread::Current(); + ScopedObjectAccess soa(self); LOG(INFO) << StringPrintf("Exception thrown when reading response data from dispatcher 0x%08x", - type); - env->ExceptionDescribe(); - env->ExceptionClear(); + type) << std::endl << self->GetException()->Dump(); + self->ClearException(); return false; } diff --git a/test/1940-ddms-ext/check b/test/1940-ddms-ext/check deleted file mode 100755 index 91966b41a0..0000000000 --- a/test/1940-ddms-ext/check +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2017 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Need to pull out the describeException ouput since that won't be there on -# device. -./remove_error.py "$2" "./expected_error.txt" > "$2.tmp" - -./default-check "$1" "$2.tmp" diff --git a/test/1940-ddms-ext/expected_error.txt b/test/1940-ddms-ext/expected_error.txt deleted file mode 100644 index 73883b46e2..0000000000 --- a/test/1940-ddms-ext/expected_error.txt +++ /dev/null @@ -1,4 +0,0 @@ -java.lang.ArrayIndexOutOfBoundsException: byte[] offset=12 length=55 src.length=1 - at art.Test1940.processChunk(Native Method) - at art.Test1940.run(Test1940.java:156) - at Main.main(Main.java:19) diff --git a/test/1940-ddms-ext/remove_error.py b/test/1940-ddms-ext/remove_error.py deleted file mode 100755 index 638c479a31..0000000000 --- a/test/1940-ddms-ext/remove_error.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2018 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('input_data', type=open) - parser.add_argument('expected_error', type=str) - args = parser.parse_args() - - for line in map(str.rstrip, args.input_data.readlines()): - print_full = True - with open(args.expected_error) as err_file: - for err_line in map(str.rstrip, err_file): - if line.startswith(err_line): - print_full = False - if line != err_line: - print(line[len(err_line):]) - break - if print_full and line != '': - print(line) - -if __name__ == '__main__': - main() |