- Newest
- Most votes
- Most comments
Hi @REDACTEDUSER
I was able to find the problem and it was indeed a link order issue with the AWS core library. Adding the following to Tools/build/waf-1.7.13/lmbrwaflib/lumberyard_sdks.py should patch the problem.
@REDACTEDUSER
@before_method('propagate_uselib_vars')
def link_aws_sdk_core_after_android(self):
platform = self.env['PLATFORM']
if not ('android' in platform and self.bld.spec_monolithic_build()):
return
if 'AWS_CPP_SDK_CORE' in self.uselib:
self.uselib = [ uselib for uselib in self.uselib if uselib != 'AWS_CPP_SDK_CORE' ]
self.uselib.append('AWS_CPP_SDK_CORE')
Let me know if you are still seeing an issue after applying the patch.
Oh man this looks fun -- fetching some answers for ya. Sorry for the delayed response!
FWIW, I checked the shared and static libs - the symbols are there:
(static)
$ nm -g -C ./Debug/libaws-cpp-sdk-core.a | grep EnumParseOverflowContainer
00000000 T Aws::CheckAndSwapEnumOverflowContainer(Aws::Utils::EnumParseOverflowContainer*, Aws::Utils::EnumParseOverflowContainer*)
00000000 W Aws::Utils::EnumParseOverflowContainer* Aws::New<Aws::Utils::EnumParseOverflowContainer>(char const*)
00000000 W Aws::Utils::EnumParseOverflowContainer::EnumParseOverflowContainer()
00000000 W Aws::Utils::EnumParseOverflowContainer::~EnumParseOverflowContainer()
00000000 W void Aws::Delete<Aws::Utils::EnumParseOverflowContainer>(Aws::Utils::EnumParseOverflowContainer*)
EnumParseOverflowContainer.cpp.o:
00000000 T Aws::Utils::EnumParseOverflowContainer::StoreOverflow(int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, Aws::Allocator<char> > const&)
00000000 T Aws::Utils::EnumParseOverflowContainer::RetrieveOverflow(int) const
$ nm -g -C ./Release/libaws-cpp-sdk-core.a | grep EnumParseOverflowContainer
00000001 T Aws::CheckAndSwapEnumOverflowContainer(Aws::Utils::EnumParseOverflowContainer*, Aws::Utils::EnumParseOverflowContainer*)
EnumParseOverflowContainer.cpp.o:
00000001 T Aws::Utils::EnumParseOverflowContainer::StoreOverflow(int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, Aws::Allocator<char> > const&)
00000001 T Aws::Utils::EnumParseOverflowContainer::RetrieveOverflow(int) const
(shared)
$ objdump -TC ./Debug/libaws-cpp-sdk-core.so | grep EnumParseOverflowContainer
000c27c4 g DF .text 0000063c Base Aws::CheckAndSwapEnumOverflowContainer(Aws::Utils::EnumParseOverflowContainer*, Aws::Utils::EnumParseOverflowContainer*)
000e8934 w DF .text 00000064 Base Aws::Utils::EnumParseOverflowContainer* Aws::New<Aws::Utils::EnumParseOverflowContainer>(char const*)
0014a860 w DF .text 000000e4 Base Aws::Utils::EnumParseOverflowContainer::EnumParseOverflowContainer()
0014aa50 w DF .text 0000005c Base Aws::Utils::EnumParseOverflowContainer::~EnumParseOverflowContainer()
000e8998 w DF .text 00000044 Base void Aws::Delete<Aws::Utils::EnumParseOverflowContainer>(Aws::Utils::EnumParseOverflowContainer*)
001a8dc8 g DF .text 000003dc Base Aws::Utils::EnumParseOverflowContainer::StoreOverflow(int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, Aws::Allocator<char> > const&)
001a84c4 g DF .text 00000904 Base Aws::Utils::EnumParseOverflowContainer::RetrieveOverflow(int) const
$ objdump -TC ./Release/libaws-cpp-sdk-core.so | grep EnumParseOverflowContainer
00087c39 g DF .text 00000030 Base Aws::CheckAndSwapEnumOverflowContainer(Aws::Utils::EnumParseOverflowContainer*, Aws::Utils::EnumParseOverflowContainer*)
000cd091 g DF .text 00000220 Base Aws::Utils::EnumParseOverflowContainer::StoreOverflow(int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, Aws::Allocator<char> > const&)
000ccd75 g DF .text 0000031c Base Aws::Utils::EnumParseOverflowContainer::RetrieveOverflow(int) const
Thanks for sharing this! I've sent this over to my peers to take a look. Will update you on answers ASAP!
Any updates? I'd love to do some performance testing on mobile devices :(
Hi @REDACTEDUSER
It looks as if the AWS core library isn't getting included in the linker command. Could you verify this by either looking at the task dump when the command fails or running your build command with "--zones=runner" included (note: you may need to be quick to capture the temp response file before it's deleted with this option)?
6015-build-out.txt|attachment (403 KB)build-out.txtHi @REDACTEDUSER
Here's the tail end of the task dump (ommitted all of the .o files, etc preceding the library options)
-lAzGameFramework -lEMotionFXStaticLib -lGem.CloudGemFramework.StaticLibrary.6fc787a982184217a5a553ca24676cfa.v1.1.1 -lAzFramework -lGridMate -lGridMateForTools -lCryAction_AutoFlowNode -lAzCore -lAkMemoryMgr -lAkMusicEngine -lAkSoundEngine -lAkStreamMgr -lAkCompressorFX -lAkConvolutionReverbFX -lAkDelayFX -lAkExpanderFX -lAkFlangerFX -lAkGainFX -lAkGuitarDistortionFX -lAkHarmonizerFX -lAkMatrixReverbFX -lAkMeterFX -lAkParametricEQFX -lAkPeakLimiterFX -lAkPitchShifterFX -lAkRecorderFX -lAkRoomVerbFX -lAkStereoDelayFX -lAkTimeStretchFX -lAkTremoloFX -lAkAudioInputSource -lAkSilenceSource -lAkSineSource -lAkSynthOne -lAkToneSource -lAkSoundSeedImpactFX -lAkSoundSeedWind -lAkSoundSeedWoosh -lCrankcaseAudioREVModelPlayerFX -lAkVorbisDecoder -lMcDSPFutzBoxFX -lMcDSPLimiterFX -lfreetype2 -llz4 -ltomcrypt -ltommath -lexpat -lzlib -lmd5 -llzma -llzss -laws-cpp-sdk-core -lcurl -lssl -lcrypto -lz -laws-cpp-sdk-cognito-identity -laws-cpp-sdk-identity-management -laws-cpp-sdk-lambda -laws-cpp-sdk-gamelift -llua -Wl,-Bdynamic -lc:\\Amazon\\Lumberyard\\1.11.1.0\\dev\\Code -lJ:/work/Android/NDK\\platforms\\android-21\\arch-arm\\usr\\lib -lJ:/work/Android/NDK\\sources\\cxx-stl\\llvm-libc++\\libs\\armeabi-v7a -lc:\\Amazon\\Lumberyard\\1.11.1.0\\dev\\Code\\SDKs -lc:\\Amazon\\Lumberyard\\1.11.1.0\\dev\\Code\\Tools\\CryCommonTools -lc:\\Amazon\\Lumberyard\\1.11.1.0\\dev\\Code\\Tools\\HLSLCrossCompiler\\lib\\android-armeabi-v7a -lc:\\Amazon\\Lumberyard\\1.11.1.0\\dev\\Code\\SDKs\\AWSNativeSDK\\lib\\android\\ndk_r12\\android-21\\armeabi-v7a\\clang-3.8\\Release -landroid -lc -llog -ldl -lc++_shared -lOpenSLES -lAzCore -lHLSLcc -lGLESv2 -lEGL -lm -lGLESv1_CM -laws-cpp-sdk-gamelift'
I see -lAzCore in there, but I don't see the AWS core lib specified anywhere. Attached is the full output if you want to take a look -
Here you go - list of all the gems I have enabled:
{
"GemListFormatVersion": 2,
"Gems": [
{
"Path": "Gems/EMotionFX",
"Uuid": "044a63ea67d04479aa5daf62ded9d9ca",
"Version": "0.1.0",
"_comment": "EMotionFX"
},
{
"Path": "MyGame/Gem",
"Uuid": "0cc9caf722af45e69b2fefa913212db3",
"Version": "0.1.0"
},
{
"Path": "Gems/LyShine",
"Uuid": "0fefab3f13364722b2eab3b96ce2bf20",
"Version": "0.1.0",
"_comment": "LyShine"
},
{
"Path": "Gems/CloudCanvasCommon",
"Uuid": "102e23cf4c4c4b748585edbce2bbdc65",
"Version": "0.1.0",
"_comment": "CloudCanvasCommon"
},
{
"Path": "Gems/LegacyGameInterface",
"Uuid": "3108b261962e44b6a0c1c036c693bca2",
"Version": "1.0.0",
"_comment": "LegacyGameInterface"
},
{
"Path": "Gems/CryLegacy",
"Uuid": "352fef7706634c92814c587e84d7165a",
"Version": "0.1.0",
"_comment": "CryLegacy"
},
{
"Path": "Gems/Maestro",
"Uuid": "3b9a978ed6f742a1acb99f74379a342c",
"Version": "0.1.0",
"_comment": "Maestro"
},
{
"Path": "Gems/CertificateManager",
"Uuid": "659cffff33b14a10835bafc6ea623f98",
"Version": "0.0.1",
"_comment": "CertificateManager"
},
{
"Path": "Gems/CloudGemFramework/v1",
"Uuid": "6fc787a982184217a5a553ca24676cfa",
"Version": "1.1.1",
"_comment": "CloudGemFramework"
},
{
"Path": "Gems/GameLift",
"Uuid": "76de765796504906b73be7365a9bff06",
"Version": "2.0.0",
"_comment": "GameLift"
},
{
"Path": "Gems/PhysicsEntities",
"Uuid": "99ea531451fc4f64a5a9fe8f385e8a76",
"Version": "0.1.0",
"_comment": "PhysicsEntities"
},
{
"Path": "Gems/Camera",
"Uuid": "f910686b6725452fbfc4671f95f733c6",
"Version": "0.1.0",
"_comment": "Camera"
},
{
"Path": "Gems/LmbrCentral",
"Uuid": "ff06785f7145416b9d46fde39098cb0c",
"Version": "0.1.0",
"_comment": "LmbrCentral"
}
]
}
Hope that helps!
Hi @Twolewis, I just wanted to let you know that I was able to reproduce the link error with the list of gems you provided. I'll report back as soon as I figure out what's going on!
Hi @Twolewis, my apologies for the delay. I do see the AWS core library hidden in the linker command. Given that, it now may be a link order issue though I'm not quite sure why it would manifest itself now. Do you have any other AWS gems enabled besides CloudGemFramework mentioned the linker command? I would like to see what the bare minimum is to reproduce this issue locally so I can get to the bottom of it.
This post is closed: Adding new answers, comments, and votes is disabled.
Relevant content
- asked a year ago
- Accepted Answerasked 6 years ago
- Accepted Answerasked 6 years ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated 3 years ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated 7 months ago