Complete
over 3 years ago

WERETECH-12116

No fix is planned for the 4.0.x SDK iteration. Potentially planned for 4.1.x SDK series.

With SDK 4.0.7 on Linux, cannot start program on the simulator (escaping problem in monkeybrains's ShellUtils.class)

Tested on Linux, with openjdk 11 and openjdk 18.

Problem exists in 4.0.7 (but 4.0.6 is OK)

monkeybrains.jar incorrectly escape the program filename (looks like double escape of \):

4.0.7 does:

execve("/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/shell",
["/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/shell",
"--transport=tcp", "--transport_args=127.0.0.1:1234",
"push",
"\\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\"",
"0:/GARMIN/APPS/AnalogWatch.prg"], 0x7fffdba06c88 /* 53 vars */ <unfinished ...>

4.0.6 does:

execve("/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/bin/shell",
["/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/bin/shell",
"--transport=tcp", "--transport_args=127.0.0.1:1235",
"push",
"\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/samples/Analog/AnalogWatch.prg\"",
"0:/GARMIN/APPS/AnalogWatch.prg"], 0x7ffc1b736410 /* 54 vars */ <unfinished ...>

The problem is in ShellUtils.class (./com/garmin/connectiq/common/communication/shell/ShellUtils.class)

If I pick ShellUtils.class from 4.0.6 and put in 4.0.7 and re-jar monkeyclass.jar, the problem is solved.

See strace output bellow if more details are needed.

jeansch@blackpage (0) ~/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog % strace -f -s 4096  java -classpath /home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/monkeybrains.jar com.garmin.monkeybrains.monkeydodeux.MonkeyDoDeux -f AnalogWatch.prg -d fenix5 -s /home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/shell 2>&1 | grep AnalogWatch.prg
execve("/usr/bin/java", ["java", "-classpath", "/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/monkeybrains.jar", "com.garmin.monkeybrains.monkeydodeux.MonkeyDoDeux", "-f", "AnalogWatch.prg", "-d", "fenix5", "-s", "/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/shell"], 0x7ffe7cb68fb0 /* 53 vars */) = 0
[pid 2850466] openat(AT_FDCWD, "AnalogWatch.prg", O_RDONLY) = 8
[pid 2850466] write(15, "/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/shell\0--transport=tcp\0--transport_args=127.0.0.1:1234\0push\0\\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\"\0000:/GARMIN/APPS/AnalogWatch.prg\0/usr/local/sbin\0/usr/local/bin\0/usr/sbin\0/usr/bin\0/sbin\0/bin\0/snap/bin\0/home/jeansch/.bin\0/home/jeansch/.local/bin\0/home/jeansch/env2/bin\0", 431 <unfinished ...>
[pid 2850489] read(14, "/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/shell\0--transport=tcp\0--transport_args=127.0.0.1:1234\0push\0\\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\"\0000:/GARMIN/APPS/AnalogWatch.prg\0/usr/local/sbin\0/usr/local/bin\0/usr/sbin\0/usr/bin\0/sbin\0/bin\0/snap/bin\0/home/jeansch/.bin\0/home/jeansch/.local/bin\0/home/jeansch/env2/bin\0", 431) = 431
[pid 2850489] execve("/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/shell", ["/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/bin/shell", "--transport=tcp", "--transport_args=127.0.0.1:1234", "push", "\\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\"", "0:/GARMIN/APPS/AnalogWatch.prg"], 0x7fffdba06c88 /* 53 vars */ <unfinished ...>
[pid 2850489] sendto(3, "\1\0\0\0\f\0\0\0\246\0\0\0push \\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\" 0:/GARMIN/APPS/AnalogWatch.prg \0", 166, 0, NULL, 0) = 166
[pid 2850491] recvfrom(3, "\0\0\0\0\0\0\0\0\\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0000:/GARMIN/APPS/AnalogWatch.prg\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 528, 0, NULL, NULL) = 528
[pid 2850491] openat(AT_FDCWD, "/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/\\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\"", O_RDONLY) = -1 ENOENT (No such file or directory)
[pid 2850491] write(1, "Could not open file: \\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\" Error: 1\n", 147) = 147
[pid 2850488] read(10, "Found Transport: tcp\nConnecting...\nConnecting to device...\nDevice Version 0.1.0\nDevice id 1 name \"A garmin device\"\nShell Version 0.1.0\nCould not open file: \\\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.7-2021-11-29-437ff4cc4/samples/Analog/AnalogWatch.prg\\\" Error: 1\nConnection Finished\nClosing shell and port \n", 326) = 326

In 4.0.6, it is ok:

jeansch@blackpage (0) ~/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/samples/Analog % strace -f -s 4096 java -classpath /home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/bin/monkeybrains.jar com.garmin.monkeybrains.monkeydodeux.MonkeyDoDeux -f AnalogWatch.prg -d fenix5 -s /home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/bin/shell 2>&1 | grep AnalogWatch.prg
execve("/usr/bin/java", ["java", "-classpath", "/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/bin/monkeybrains.jar", "com.garmin.monkeybrains.monkeydodeux.MonkeyDoDeux", "-f", "AnalogWatch.prg", "-d", "fenix5", "-s", "/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/bin/shell"], 0x7ffe7c7fc370 /* 54 vars */) = 0
[pid 2852250] openat(AT_FDCWD, "AnalogWatch.prg", O_RDONLY <unfinished ...>
[pid 2852277] execve("/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/bin/shell", ["/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/bin/shell", "--transport=tcp", "--transport_args=127.0.0.1:1235", "push", "\"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/samples/Analog/AnalogWatch.prg\"", "0:/GARMIN/APPS/AnalogWatch.prg"], 0x7ffc1b736410 /* 54 vars */ <unfinished ...>
[pid 2852277] sendto(3, "\1\0\0\0\f\0\0\0\244\0\0\0push \"/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/samples/Analog/AnalogWatch.prg\" 0:/GARMIN/APPS/AnalogWatch.prg \0", 164, 0, NULL, 0) = 164
[pid 2852279] recvfrom(3, "\0\0\0\0\0\0\0\0/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/samples/Analog/AnalogWatch.prg\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0000:/GARMIN/APPS/AnalogWatch.prg\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 528, 0, NULL, NULL) = 528
[pid 2852279] openat(AT_FDCWD, "/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/samples/Analog/AnalogWatch.prg", O_RDONLY) = 4
[pid 2852279] sendto(3, "\6\0\0\0\34\2\0\0\34\2\0\0\0\0\0\0\354e\1\0/home/jeansch/.Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-4.0.6-2021-10-06-af9b9d6e2/samples/Analog/AnalogWatch.prg\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0000:/GARMIN/APPS/AnalogWatch.prg\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 540, 0, NULL, 0) = 540