From a04212067a88df3c849a124cf0ec0ca88e7aeba0 Mon Sep 17 00:00:00 2001 From: Fabien Sanglard Date: Mon, 12 Dec 2022 22:03:25 +0000 Subject: Fix event parsing ART tests are failing with the introduction of aosp/2320257. The issue is that PacketDispatcher assumes that is a packet is not a response to a cmd, it is an Event:Composite which is incorrect. It could also be a JDWP extension event such as DDM. Bug: 262643398 Bug: 286794967 Test: Used the following tests mkdir master-art; cd master-art repo init -u https://android.googlesource.com/platform/manifest -b master-art --partial-clone --clone-filter=blob:limit=10M . build/envsetup.sh lunch armv8-eng art/tools/buildbot-build.sh --host art/tools/run-libjdwp-tests.sh --mode=host --test org.apache.harmony.jpda.tests.jdwp.VirtualMachine_ExitTest#testExit001 (cherry picked from https://android-review.googlesource.com/q/commit:4fcd0e358265d763d9e64e518c0f5e3db6d16406) Merged-In: I9bfd325975b4ab9b4a556adb221ab7a249f7c491 Change-Id: I9bfd325975b4ab9b4a556adb221ab7a249f7c491 Cherrypick a fix to apache-harmony --- .../harmony/jpda/tests/framework/jdwp/PacketDispatcher.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/framework/jdwp/PacketDispatcher.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/framework/jdwp/PacketDispatcher.java index feceb8f..8870845 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/framework/jdwp/PacketDispatcher.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/framework/jdwp/PacketDispatcher.java @@ -33,6 +33,7 @@ import java.util.Hashtable; import org.apache.harmony.jpda.tests.framework.LogWriter; import org.apache.harmony.jpda.tests.framework.TestOptions; +import org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands.EventCommandSet; import org.apache.harmony.jpda.tests.framework.jdwp.exceptions.TimeoutException; /** @@ -554,7 +555,12 @@ public class PacketDispatcher extends Thread { EventPacket eventPacket = new EventPacket(packet); // below is to check received events for correctness - // below is trace for received events + // Check this is indeed an Event (this could be a JDWP extension) + // If it is not, ignore it. + if (eventPacket.getCommandSet() != EventCommandSet.CommandSetID) { + continue; + } + ParsedEvent[] parsedEvents = ParsedEvent .parseEventPacket(eventPacket); if ((eventRequestIDForTrace >= 0) -- cgit v1.2.3