Skip to content

Conversation

@konraddysput
Copy link
Collaborator

@konraddysput konraddysput commented Sep 24, 2020

This release adds the ability to capture native iOS crashes from Unity games deployed to iOS. The Backtrace Configuration now exposes a setting for games being prepared for iOS to choose Capture native crashes. When enabled, the backtrace-unity client will capture and submit native iOS crashes to the configured Backtrace instance. To generate human readable callstacks, game programmers will need to generate and upload appropriate debug symbols.

  • Renamed default uname.sysname attributes for some platforms for example: ps4 (instead of PS4), switch (instead of Switch)
  • Added default uname.sysname detection for new Unity platforms. Previously when we detected unknown OS, Backtrace-Unity set uname.sysname attribute to "NaCL". Right now we will try to get platform namy based on Application.platform property.
  • By default backtrace-unity plugin will add error.type attribute that allows developers to quickly filter reports based on exception type - for example: Crash, Message, Hang, Unhandled Exception, Exception.
  • Updated Android NDK libraries used by Unity plugin.

Backtrace and others added 6 commits September 24, 2020 13:33
commit 1eea055
Author: Konrad Dysput <konrad.dysput@gmail.com>
Date:   Thu Sep 17 14:49:55 2020 +0200

    Version 3.1.1 - remove random path in stack trace (#44)

    * - Prevent  from extending attributes with report attributes.
    - Removed randomly generated path to assembly from ,
    - Prevent  from multi initialization.

    * Prevent database from multi initialization

    * Update CHANGELOG.md
jasoncdavis0 added 3 commits September 25, 2020 11:27
Added info about when the crash report is uploaded.
@vlussenburg
Copy link
Contributor

vlussenburg commented Sep 28, 2020

@konraddysput The Tooltip still mentions Android, even when in IOS mode:
Screen Shot 2020-09-28 at 4 25 37 PM

LMK if it's okay to post that on the PR or if you prefer a Slack message, issue or me to fix it myself :)

@konraddysput
Copy link
Collaborator Author

@konraddysput The Tooltip still mentions Android, even when in IOS mode:
Screen Shot 2020-09-28 at 4 25 37 PM

LMK if it's okay to post that on the PR or if you prefer a Slack message, issue or me to fix it myself :)

Good catch - I will take a look what is wrong there.

@vlussenburg
Copy link
Contributor

vlussenburg commented Sep 29, 2020

Screen Shot 2020-09-29 at 3 58 00 PM
The build borks when building for WebGL

Workaround, comment it out in:

/*if(configuration.CaptureNativeCrashes)
            {
                HandleNativeCrashes(configuration);
            }*/

in NativeClient.cs

@vlussenburg
Copy link
Contributor

vlussenburg commented Sep 29, 2020

Can't build for Android (IL2CPP):

Failed running /Applications/2019.4.8f1/Unity.app/Contents/il2cpp/build/deploy/il2cppcore/il2cppcore.dll --convert-to-cpp --emit-null-checks --enable-array-bounds-check --dotnetprofile="unityaot" --compile-cpp --libil2cpp-static --platform="Android" --architecture="ARMv7" --configuration="Release" --outputpath="/Users/vincent/Documents/Asteriods/Temp/StagingArea/assets/bin/Data/Native/armeabi-v7a/libil2cpp.so" --cachedirectory="/Users/vincent/Documents/Asteriods/Assets/../Library/il2cpp_android_armeabi-v7a/il2cpp_cache" --additional-include-directories="/Applications/2019.4.8f1/PlaybackEngines/AndroidPlayer/Tools/bdwgc/include" --additional-include-directories="/Applications/2019.4.8f1/PlaybackEngines/AndroidPlayer/Tools/libil2cpp/include" --tool-chain-path="/Applications/2019.4.8f1/PlaybackEngines/AndroidPlayer/NDK" --profiler-report --map-file-parser="/Applications/2019.4.8f1/Unity.app/Contents/Tools/MapFileParser/MapFileParser" --directory="/Users/vincent/Documents/Asteriods/Temp/StagingArea/assets/bin/Data/Managed" --generatedcppdir="/Users/vincent/Documents/Asteriods/Temp/StagingArea/Il2Cpp/il2cppOutput" 

stdout:
Building libil2cpp.so with AndroidToolChain
	Output directory: /Users/vincent/Documents/Asteriods/Temp/StagingArea/assets/bin/Data/Native/armeabi-v7a
	Cache directory: /Users/vincent/Documents/Asteriods/Library/il2cpp_android_armeabi-v7a/il2cpp_cache
ObjectFiles: 189 of which compiled: 118
	Time Compile: 18723 milliseconds Il2CppAttributes.cpp
	Time Compile: 17317 milliseconds Il2CppInvokerTable.cpp
	Time Compile: 13240 milliseconds System1.cpp
	Time Compile: 11061 milliseconds Generics21.cpp
	Time Compile: 10773 milliseconds Generics19.cpp
	Time Compile: 10688 milliseconds mscorlib4.cpp
	Time Compile: 10282 milliseconds mscorlib1.cpp
	Time Compile: 9942 milliseconds com.unity.multiplayer-hlapi.Runtime1.cpp
	Time Compile: 9509 milliseconds mscorlib11.cpp
	Time Compile: 9444 milliseconds mscorlib9.cpp
Total compilation time: 48377 milliseconds.
il2cpp.exe didn't catch exception: Unity.IL2CPP.Building.BuilderFailedException: /Applications/2019.4.8f1/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ @"/var/folders/yj/m1z277dd7f9g2zvcj610nyg40000gn/T/tmpXEge04.tmp" -o "/Users/vincent/Documents/Asteriods/Library/il2cpp_android_armeabi-v7a/il2cpp_cache/linkresult_E0F8131D270ECE5B51FE8AA191A4621F/libil2cpp.so" -shared -Wl,-soname,libil2cpp.so -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--gc-sections -Wl,--build-id -stdlib=libc++ -static-libstdc++ -target armv7-linux-androideabi19 -Wl,--wrap,sigaction -llog -rdynamic -fuse-ld=gold

/Users/vincent/Documents/Asteriods/Temp/StagingArea/Il2Cpp/il2cppOutput/Backtrace.Unity.cpp:36161: error: undefined reference to 'StartBacktraceIntegration'
/Users/vincent/Documents/Asteriods/Temp/StagingArea/Il2Cpp/il2cppOutput/Backtrace.Unity.cpp:36175: error: undefined reference to 'Crash'
/Users/vincent/Documents/Asteriods/Temp/StagingArea/Il2Cpp/il2cppOutput/Backtrace.Unity.cpp:36161: error: undefined reference to 'StartBacktraceIntegration'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)


   at Unity.IL2CPP.Building.CppProgramBuilder.PostprocessObjectFiles(HashSet`1 objectFiles, CppToolChainContext toolChainContext)
   at Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics)
   at il2cpp.Program.DoRun(String[] args, List`1 foundAssemblies)
   at il2cpp.Program.Run(String[] args, Boolean setInvariantCulture)
   at il2cpp.Program.Main(String[] args)
stderr:

Unhandled Exception: Unity.IL2CPP.Building.BuilderFailedException: /Applications/2019.4.8f1/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ @"/var/folders/yj/m1z277dd7f9g2zvcj610nyg40000gn/T/tmpXEge04.tmp" -o "/Users/vincent/Documents/Asteriods/Library/il2cpp_android_armeabi-v7a/il2cpp_cache/linkresult_E0F8131D270ECE5B51FE8AA191A4621F/libil2cpp.so" -shared -Wl,-soname,libil2cpp.so -Wl,--no-undefined -Wl,-z,noexecstack -Wl,--gc-sections -Wl,--build-id -stdlib=libc++ -static-libstdc++ -target armv7-linux-androideabi19 -Wl,--wrap,sigaction -llog -rdynamic -fuse-ld=gold

/Users/vincent/Documents/Asteriods/Temp/StagingArea/Il2Cpp/il2cppOutput/Backtrace.Unity.cpp:36161: error: undefined reference to 'StartBacktraceIntegration'
/Users/vincent/Documents/Asteriods/Temp/StagingArea/Il2Cpp/il2cppOutput/Backtrace.Unity.cpp:36175: error: undefined reference to 'Crash'
/Users/vincent/Documents/Asteriods/Temp/StagingArea/Il2Cpp/il2cppOutput/Backtrace.Unity.cpp:36161: error: undefined reference to 'StartBacktraceIntegration'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)


   at Unity.IL2CPP.Building.CppProgramBuilder.PostprocessObjectFiles(HashSet`1 objectFiles, CppToolChainContext toolChainContext)
   at Unity.IL2CPP.Building.CppProgramBuilder.Build(IBuildStatistics& statistics)
   at il2cpp.Program.DoRun(String[] args, List`1 foundAssemblies)
   at il2cpp.Program.Run(String[] args, Boolean setInvariantCulture)
   at il2cpp.Program.Main(String[] args)
   at Program.Main(String[] args) in /Users/builduser/buildslave/unity/build/External/il2cpp/il2cpp/il2cppcore/Program.cs:line 24

UnityEngine.Debug:LogError(Object)
UnityEditorInternal.Runner:RunProgram(Program, String, String, String, CompilerOutputParserBase) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:126)
UnityEditorInternal.Runner:RunNetCoreProgram(String, String, String, CompilerOutputParserBase, Action`1) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:77)
UnityEditorInternal.IL2CPPBuilder:RunIl2CppWithArguments(List`1, Action`1, String) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:517)
UnityEditorInternal.IL2CPPBuilder:ConvertPlayerDlltoCpp(Il2CppBuildPipelineData, String, String, Boolean) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:500)
UnityEditorInternal.IL2CPPBuilder:Run() (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:337)
UnityEditorInternal.IL2CPPUtils:RunIl2Cpp(String, String, IIl2CppPlatformProvider, Action`1, RuntimeClassRegistry) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:65)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at /Users/builduser/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:197)
Exception: /Applications/2019.4.8f1/Unity.app/Contents/il2cpp/build/deploy/il2cppcore/il2cppcore.dll did not run properly!
UnityEditorInternal.Runner.RunProgram (UnityEditor.Utils.Program p, System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:128)
UnityEditorInternal.Runner.RunNetCoreProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser, System.Action`1[T] setupStartInfo) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildUtils.cs:77)
UnityEditorInternal.IL2CPPBuilder.RunIl2CppWithArguments (System.Collections.Generic.List`1[T] arguments, System.Action`1[T] setupStartInfo, System.String workingDirectory) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:517)
UnityEditorInternal.IL2CPPBuilder.ConvertPlayerDlltoCpp (UnityEditor.Il2Cpp.Il2CppBuildPipelineData data, System.String outputDirectory, System.String workingDirectory, System.Boolean platformSupportsManagedDebugging) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:500)
UnityEditorInternal.IL2CPPBuilder.Run () (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:337)
UnityEditorInternal.IL2CPPUtils.RunIl2Cpp (System.String tempFolder, System.String stagingAreaData, UnityEditorInternal.IIl2CppPlatformProvider platformProvider, System.Action`1[T] modifyOutputBeforeCompile, UnityEditor.RuntimeClassRegistry runtimeClassRegistry) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs:65)
UnityEditor.Android.PostProcessor.Tasks.RunIl2Cpp.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <d265dd4439034d6c9926c590736e62a5>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <d265dd4439034d6c9926c590736e62a5>:0)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (UnityEditor.BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at <d265dd4439034d6c9926c590736e62a5>:0)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <d265dd4439034d6c9926c590736e62a5>:0)
UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:340)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at /Users/builduser/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:197)

Is this a 'user error'? :)

@konraddysput
Copy link
Collaborator Author

Interesting - both issues will be solved by preprocessor directive in iOS Native Client. I'm pushing new changes that should fix this issue. The main problem was _Internal DllImport - WebGL or Android IL2CPP expected that we will provide an API, but API was available only on the iOS.

@konraddysput
Copy link
Collaborator Author

  • Fixed DllInvoke in iOS Native client - right now DllInvoke in iOS Native Client won't generate any problem in different platforms,
  • Fixed "Capture native crashes" tooltip. Right now we won't display Android message on iOS.

@vlussenburg
Copy link
Contributor

Thanks @konraddysput. Gonna test :)

@vlussenburg
Copy link
Contributor

vlussenburg commented Oct 13, 2020

@konraddysput Unity told me:

There are inconsistent line endings in the 'Packages/io.backtrace.unity/Runtime/Native/iOS/NativeClient.cs' script. Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings menu commands.

@konraddysput
Copy link
Collaborator Author

Hey @vlussenburg - today I fixed line endings in iOS native client.

@konraddysput
Copy link
Collaborator Author

Summary:

Our iOS support allows us to:

  • capture native iOS crashes
  • send native crashes with Unity specific attributes,
  • store attributes when a crash occurred and a game is shutting down.
  • forward native iOS attributes to Unity reports

Work in progress:

  • ANR detection
  • improve directory structure to avoid preprocesor directives.

@konraddysput konraddysput changed the title iOS support 3.2.0 Release Nov 4, 2020
@konraddysput konraddysput added the enhancement New feature or request label Nov 4, 2020
@konraddysput konraddysput merged commit 5266f98 into master Nov 11, 2020
@konraddysput konraddysput deleted the feature/ios branch November 16, 2020 12:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants