aws-iot-device-client: greengrassv2 SecureTunnel component no longer compatible with Debian Stretch on armv7l

Describe the bug

The SecureTunnel component recently stopped working for us on Debian Stretch on armv7l. Upon investigation, we found that this was due to a C++ ABI mismatch. Debian Stretch provides ABI version <= 1.3.10 and the component now requires ABI version == 1.3.11.

To Reproduce

Steps to reproduce the behavior:

  1. (AWS console) Create a SecureTunnel deployment on a Debian Stretch armv7l device.
  2. (AWS console) “Create a tunnel” to the target device.
  3. (Device) cat ${LOG_DIR}/aws.greengrass.SecureTunneling.log
  4. See error: (formatted for clarity)
{
  "thread": "Copier",
  "level": "INFO",
  "eventType": "stdout",
  "message": "[INFO ] 2023-09-16 21:34:46.346 [pool-3-thread-4] SubscribeResponseHandler - Secure tunnel process completed with exit code: 1",
  "contexts": {
    "scriptName": "services.aws.greengrass.SecureTunneling.lifecycle.run.script",
    "serviceName": "aws.greengrass.SecureTunneling",
    "currentState": "RUNNING"
  },
  "loggerName": "aws.greengrass.SecureTunneling",
  "timestamp": 1694900086355,
  "cause": null
}

Expected behavior

No exit 1 message in logs; clients able to connect.

Actual behavior

set -ex
cd $(mktemp -d)
cp ${GG_ROOT}/v2/packages/artifacts/aws.greengrass.SecureTunneling/1.0.16/GreengrassV2SecureTunnelingComponent-1.0-all.jar ./
jar -xf GreengrassV2SecureTunnelingComponent-1.0-all.jar
cd aws.greengrass.SecureTunneling/linux/armv7l
chmod +x aws-iot-device-client
./aws-iot-device-client --help

gives

./aws-iot-device-client: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by ./aws-iot-device-client)

and

strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | fgrep CXXABI

gives

CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_TM_1
CXXABI_ARM_1.3.3

Other context

CI should be updated to compile with backwards compatibility for older ABI versions. Should be a simple change to gcc flags.

About this issue

  • Original URL
  • State: closed
  • Created 9 months ago
  • Comments: 21 (9 by maintainers)

Most upvoted comments

hi @HarshGandhi-AWS - Just wanted to add a perspective here. I understand the cost to support old operating systems is high, but it seems wild to me that support would be silently dropped for a previously working OS without either a) a major version change for the component or b) a release note.

We have been working with Greengrass for a while now and we continue to hit issues like these (missing/poor documentation, lack of complete support for basic use cases, lack of consideration of several pieces of the complete software development lifecycle build greengrass. These issues have been burning tons and tons of time for us and make it hard to believe that Greengrass should be our long term future.

Again, understand the limitations of supporting older systems, but would appreciate more documentation/thought into these types of deprecations or changes to supported platforms in the future.

@HarshGandhi-AWS please update the rePost.

We have tested down to v1.0.14 and they all suffer from the issue as described.