Changes

4,257 bytes added ,  20:45, 28 February 2023
no edit summary
Line 1: Line 1: −
This is the applet presented when a title displays an error message.
+
This is the applet presented when a title displays an error message. See [[AM_services#Library_Applets|Library Applets]].
See [[AM_services#Library_Applets]].
      
All errors displayed by this applet get logged and can be viewed under 'Settings' > 'Support' > 'Error History'.
 
All errors displayed by this applet get logged and can be viewed under 'Settings' > 'Support' > 'Error History'.
Line 6: Line 5:  
On pre-5.0.0 the specified LanguageCode has to be valid, otherwise a fatal-error is thrown. With [5.0.0+] it will use en-US when the LanguageCode is invalid.
 
On pre-5.0.0 the specified LanguageCode has to be valid, otherwise a fatal-error is thrown. With [5.0.0+] it will use en-US when the LanguageCode is invalid.
   −
== ErrorContext ==
+
= ErrorContext =
 +
This is "nn::err::ErrorContext". This is a 0x200-byte struct.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 20: Line 21:  
|}
 
|}
   −
This 0x200 bytes struct is used to set specific error contexts for [[Error_Report_services#SubmitContext|erpt:c]].
+
This is used to set specific error contexts for [[Error_Report_services#SubmitContext|erpt:c]].
    
Depending on '''Type''', different error report fields will be attached and sent:
 
Depending on '''Type''', different error report fields will be attached and sent:
Line 29: Line 30:  
* Type 4: [[Error_Report_services#Fields|LcsApplicationId]], [[Error_Report_services#Fields|LcsContentMetaKeyIdList]], [[Error_Report_services#Fields|LcsContentMetaKeyVersionList]], [[Error_Report_services#Fields|LcsContentMetaKeyTypeList]], [[Error_Report_services#Fields|LcsSenderFlag]], [[Error_Report_services#Fields|LcsApplicationRequestFlag]], [[Error_Report_services#Fields|LcsHasExFatDriverFlag]], [[Error_Report_services#Fields|LcsIpAddress]] and  [[Error_Report_services#Fields|ResultBacktrace]].
 
* Type 4: [[Error_Report_services#Fields|LcsApplicationId]], [[Error_Report_services#Fields|LcsContentMetaKeyIdList]], [[Error_Report_services#Fields|LcsContentMetaKeyVersionList]], [[Error_Report_services#Fields|LcsContentMetaKeyTypeList]], [[Error_Report_services#Fields|LcsSenderFlag]], [[Error_Report_services#Fields|LcsApplicationRequestFlag]], [[Error_Report_services#Fields|LcsHasExFatDriverFlag]], [[Error_Report_services#Fields|LcsIpAddress]] and  [[Error_Report_services#Fields|ResultBacktrace]].
   −
== ErrorCommonHeader ==
+
= ErrorViewerStartupParamCommon =
 +
This is "nn::err::ErrorViewerStartupParamCommon". This is a 0x4-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x1 || [[#ErrorType|ErrorType]]
 +
|-
 +
| 0x1 || 0x1 || IsJumpEnabled
 +
|-
 +
| 0x2 || 0x2 || Reserved
 +
|}
 +
 
 +
= ErrorViewerStartupParamForApplicationError =
 +
This is "nn::err::ErrorViewerStartupParamForApplicationError". This is a 0x1014-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x3 || Reserved
 +
|-
 +
| 0x8 || 0x4 || [[#ApplicationErrorCodeNumber|ApplicationErrorCodeNumber]]
 +
|-
 +
| 0xC || 0x8 || [[Settings_services#LanguageCode|LanguageCode]]
 +
|-
 +
| 0x14 || 0x800 || DialogMessage (UTF-8 string)
 +
|-
 +
| 0x814 || 0x800 || FullScreenMessage (UTF-8 string, displayed when the user clicks on "Details" and when not set this disables displaying "Details")
 +
|}
 +
 
 +
[10.0.0+] [[Applet_Manager_services#GetMainAppletApplicationControlProperty|GetMainAppletApplicationControlProperty]] is now used internally by the applet, on failure the applet will throw a fatalerr. Hence, ApplicationError can't be used from non-Applications (such as LibraryApplet) anymore.
 +
 
 +
= ErrorViewerStartupParamForEula =
 +
This is "nn::err::ErrorViewerStartupParamForEula". This is a 0xC-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x3 || Reserved
 +
|-
 +
| 0x8 || 0x4 || [[Settings_services#RegionCode_2|RegionCode]]
 +
|}
 +
 
 +
* ErrorType = 3. Displays the EULA.
 +
 
 +
= ErrorViewerStartupParamForParentalControl =
 +
This is "nn::err::ErrorViewerStartupParamForParentalControl". This is a 0xC-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x3 || Reserved
 +
|-
 +
| 0x8 || 0x4 || PctlResultRestricted
 +
|}
 +
 
 +
Used where a Result error would have been displayed with ErrorType=0, for module=PCTL errors with desc 100-119. For this the applet will display the following dialog (without report logging): "This software is restricted by Parental Controls".
 +
 
 +
= ErrorViewerStartupParamForRecordedApplicationError =
 +
This is "nn::err::ErrorViewerStartupParamForRecordedApplicationError". This is a 0x820-byte struct.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x1 || u8 type
+
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x3 || Reserved
 
|-
 
|-
| 0x1 || 0x1 || u8 jumpFlag. When clear, this indicates WithoutJump.
+
| 0x8 || 0x4 || [[#ApplicationErrorCodeNumber|ApplicationErrorCodeNumber]]
 
|-
 
|-
| 0x2 || 0x3 || ?
+
| 0xC || 0x4 || Reserved
 
|-
 
|-
| 0x5 || 0x1 || u8 contextFlag. When set with type=0, indicates that an additional storage is pushed for [[#ResultBacktrace]]. [4.0.0+]: When set indicates that an additional storage is pushed for [[#ErrorContext]].
+
| 0x10 || 0x8 || TimeOfOccurrence (u64 PosixTime)
 
|-
 
|-
| 0x6 || 0x1 || u8 resultFlag. [[#ErrorCommonArg]]: When clear, ErrorCode is used, otherwise the applet generates the error-code from res.
+
| 0x18 || 0x8 || [[NS_services#ApplicationErrorCodeCategory|ApplicationErrorCodeCategory]]
 
|-
 
|-
| 0x7 || 0x1 || u8 contextFlag2. Similar to contextFlag except for [[#ErrorCommonArg]], indicating [[#ErrorContext]] is used.
+
| 0x20 || 0x800 || Message (UTF-8 string)
 
|}
 
|}
   −
== ErrorCommonArg ==
+
= ErrorViewerStartupParamForRecordedSystemData =
 +
This is "nn::err::ErrorViewerStartupParamForRecordedSystemData". This is a 0x18-byte struct.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x8 || ErrorCommonHeader
+
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x3 || Reserved
 
|-
 
|-
| 0x8 || 0x8 || [[#ErrorCode]]
+
| 0x8 || 0x8 || [[#ErrorCode|ErrorCode]]
 
|-
 
|-
| 0x10 || 0x4 || Result res
+
| 0x10 || 0x8 || TimeOfOccurrence (u64 PosixTime)
 
|}
 
|}
   −
ShowError: type=0, jumpFlag={varies}, contextFlag2={set when ErrorContext used}.
+
The applet does not log an error report for this. Used by [[qlaunch]] for viewing previously logged errors via the "View the Error" button.
 +
 
 +
= ErrorViewerStartupParamForRecordedSystemError =
 +
This is "nn::err::ErrorViewerStartupParamForRecordedSystemError". This is a 0x818-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x3 || Reserved
 +
|-
 +
| 0x8 || 0x8 || [[#ErrorCode|ErrorCode]]
 +
|-
 +
| 0x10 || 0x8 || TimeOfOccurrence (u64 PosixTime)
 +
|-
 +
| 0x18 || 0x800 || Message (UTF-8 string)
 +
|}
 +
 
 +
= ErrorViewerStartupParamForSystemData =
 +
This is "nn::err::ErrorViewerStartupParamForSystemData". This is a 0x14-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x1 || HasResultBacktrace
 +
|-
 +
| 0x6 || 0x1 || IsErrorCode
 +
|-
 +
| 0x7 || 0x1 || [4.0.0+] HasErrorContext ([1.0.0-3.0.2] Reserved)
 +
|-
 +
| 0x8 || 0x8 || [[#ErrorCode|ErrorCode]]
 +
|-
 +
| 0x10 || 0x4 || Result
 +
|}
 +
 
 +
ShowError: ErrorType=0, IsJumpEnabled={varies}, HasErrorContext={set when ErrorContext used}.
 
* If the input Result is 0xC8A2, the applet will display a special dialog regarding the current application requiring a software update, with buttons "Later" and "Restart". The official user-process name for this is <code>ShowUnacceptableApplicationVersionError</code>.
 
* If the input Result is 0xC8A2, the applet will display a special dialog regarding the current application requiring a software update, with buttons "Later" and "Restart". The official user-process name for this is <code>ShowUnacceptableApplicationVersionError</code>.
 
* [3.0.0+] There's also special dialog handling for Result 0xCAA2. The official user-process name for this is <code>ShowUnacceptableAddOnContentVersionError</code>.
 
* [3.0.0+] There's also special dialog handling for Result 0xCAA2. The official user-process name for this is <code>ShowUnacceptableAddOnContentVersionError</code>.
   −
== ErrorPctlArg ==
+
= ErrorViewerStartupParamForSystemError =
 +
This is "nn::err::ErrorViewerStartupParamForSystemError". This is a 0x1018-byte struct.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x8 || ErrorCommonHeader. type=4.
+
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x1 || [4.0.0+] HasErrorContext ([1.0.0-3.0.2] Reserved)
 +
|-
 +
| 0x6 || 0x2 || Reserved
 +
|-
 +
| 0x8 || 0x8 || [[#ErrorCode|ErrorCode]]
 +
|-
 +
| 0x10 || 0x8 || [[Settings_services#LanguageCode|LanguageCode]]
 +
|-
 +
| 0x18 || 0x800 || DialogMessage (UTF-8 string)
 
|-
 
|-
| 0x8 || 0x4 || Result res
+
| 0x818 || 0x800 || FullScreenMessage (UTF-8 string, displayed when the user clicks on "Details" and when not set this disables displaying "Details")
 
|}
 
|}
   −
This struct is 0xC-bytes. Used instead of [[#ErrorCommonArg]] where a Result error would have been displayed with type=0, for module=PCTL errors with desc 100-119. For this the applet will display the following dialog (without report logging): "This software is restricted by Parental Controls".
+
= ErrorViewerStartupParamForSystemUpdateEula =
 +
This is "nn::err::ErrorViewerStartupParamForSystemUpdateEula". This is a 0xC-byte struct.
   −
== ErrorEulaData ==
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x20000 || data
+
| 0x0 || 0x4 || [[#ErrorViewerStartupParamCommon|Common]]
 +
|-
 +
| 0x4 || 0x1 || Version
 +
|-
 +
| 0x5 || 0x3 || Reserved
 +
|-
 +
| 0x8 || 0x4 || [[Settings_services#RegionCode_2|RegionCode]]
 
|}
 
|}
   −
== ErrorEulaArg ==
+
* ErrorType = 8. Displays the system-update EULA. Uses an additional IStorage containing [[#EulaData|EulaData]], from [[Applet_Manager_services#CreateTransferMemoryStorage]] with flag=false.
 +
 
 +
= ErrorViewerReturnValue =
 +
This is "nn::err::ErrorViewerReturnValue". This is a 0x2-byte struct.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x8 || ErrorCommonHeader. jumpFlag = 1.
+
| 0x0 || 0x1 || Version
 
|-
 
|-
| 0x8 || 0x4 || [[Settings_services|RegionCode]]
+
| 0x1 || 0x1 || [[#ErrorViewerJumpDestination|Destination]]
 
|}
 
|}
   −
This struct is 0xC-bytes.
+
= ApplicationErrorArg =
 +
This is "nn::err::ApplicationErrorArg". This is a 0x1014-byte struct.
   −
* Eula: ErrorCommonHeader.type = 3. Displays the EULA.
+
{| class="wikitable" border="1"
* SystemUpdateEula: ErrorCommonHeader.type = 8. Displays the system-update EULA. Uses an additional IStorage containing [[#ErrorEulaData]], from [[Applet_Manager_services#CreateTransferMemoryStorage]] with flag=false.
+
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x1014 || [[#ErrorViewerStartupParamForApplicationError|StartupParam]]
 +
|}
 +
 
 +
= SystemErrorArg =
 +
This is "nn::err::SystemErrorArg". This is a 0x1028-byte struct.
   −
== ErrorRecordArg ==
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x8 || ErrorCommonHeader. type=5 and jumpFlag=1.
+
| 0x0 || 0x1018 || [[#ErrorViewerStartupParamForSystemError|StartupParam]]
 
|-
 
|-
| 0x8 || 0x8 || [[#ErrorCode]]
+
| 0x1018 || 0x9 || ServerCode
 
|-
 
|-
| 0x10 || 0x8 || u64 POSIX timestamp
+
| 0x1021 || 0x7 || Reserved
 
|}
 
|}
   −
The applet does not log an error report for this. Used by [[qlaunch]] for viewing previously logged errors via the "View the Error" button.
+
= ErrorType =
 +
This is "nn::err::ErrorType".
   −
== SystemErrorArg ==
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset || Size || Description
+
! Value
 +
! Description
 +
|-
 +
| 0 || SystemData
 +
|-
 +
| 1 || SystemError
 +
|-
 +
| 2 || ApplicationError
 +
|-
 +
| 3 || Eula
 
|-
 
|-
| 0x0 || 0x8 || ErrorCommonHeader. type=1.
+
| 4 || ParentalControl
 
|-
 
|-
| 0x8 || 0x8 || [[#ErrorCode]]
+
| 5 || RecordedSystemData
 
|-
 
|-
| 0x10 || 0x8 || [[Settings_services|LanguageCode]]
+
| 6 || RecordedSystemError
 
|-
 
|-
| 0x18 || 0x800 || UTF-8 string dialogMessage
+
| 7 || RecordedApplicationError
 
|-
 
|-
| 0x818 || 0x800 || UTF-8 string fullscreenMessage, displayed when the user clicks on "Details". When not set this disables displaying Details.
+
| 8 || SystemUpdateEula
 
|}
 
|}
   −
This struct is 0x1018-bytes.
+
= ErrorViewerJumpDestination =
 +
This is "nn::err::ErrorViewerJumpDestination".
   −
== ApplicationErrorArg ==
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Offset || Size || Description
+
! Value
 +
! Description
 
|-
 
|-
| 0x0 || 0x8 || ErrorCommonHeader. type=2 and jumpFlag=1.
+
| 0 || Nowhere
 
|-
 
|-
| 0x8 || 0x4 || u32 errorNumber. Raw decimal error number which is displayed in the dialog.
+
| 1 || Set_SystemUpdate
 
|-
 
|-
| 0xC || 0x8 || [[Settings_services|LanguageCode]]
+
| 2 || Set_DataManagement
 
|-
 
|-
| 0x14 || 0x800 || UTF-8 string dialogMessage
+
| 3 || Set_InternetSetting
 
|-
 
|-
| 0x814 || 0x800 || UTF-8 string fullscreenMessage, displayed when the user clicks on "Details". When not set this disables displaying Details.
+
| 4 || Cabinet_NfpDataSetting
 
|}
 
|}
   −
This struct is 0x1014-bytes.
+
= ErrorCode =
 +
This is "nn::err::ErrorCode". This is an u64.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || [[#ErrorCodeCategory|Category]]
 +
|-
 +
| 0x4 || 0x4 || [[#ErrorCodeNumber|Number]]
 +
|}
   −
[10.0.0+] [[Applet_Manager_services#GetMainAppletApplicationControlProperty|GetMainAppletApplicationControlProperty]] is now used internally by the applet, on failure the applet will throw a fatalerr. Hence, ApplicationError can't be used from non-Applications (such as LibraryApplet) anymore.
+
= ErrorCodeCategory =
 +
This is "nn::err::ErrorCodeCategory". This is an u32.
 +
 
 +
= ErrorCodeNumber =
 +
This is "nn::err::ErrorCodeNumber". This is an u32.
 +
 
 +
= ApplicationErrorCodeNumber =
 +
This is "nn::err::ApplicationErrorCodeNumber". This is an u32.
 +
 
 +
= EulaData =
 +
This is "nn::err::EulaData". This is a 0x20000-byte struct.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || DataCount
 +
|-
 +
| 0x4 || 0x3C || Reserved
 +
|-
 +
| 0x40 || 0x4 || [[Settings_services#Language|Language]]
 +
|-
 +
| 0x44 || 0x4 || Reserved
 +
|-
 +
| 0x48 || 0x8 || Size
 +
|-
 +
| 0x50 || 0x1FFB0 || Body
 +
|}
   −
== ErrorCode ==
+
= ResultBacktrace =
This is an u64 containing the [[Error_codes|error-code]]: the low u32 is the module portion which is normally set to <code>module + 2000</code>, and the high u32 is the error description.
+
This is "nn::err::ResultBacktrace". This is a 0x84-byte struct.
   −
== ResultBacktrace ==
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Offset || Size || Description
 
! Offset || Size || Description
 
|-
 
|-
| 0x0 || 0x4 || s32 total entries
+
| 0x0 || 0x4 || Count
 
|-
 
|-
| 0x4 || 0x4*total_entries || Array of Result
+
| 0x4 || 0x4 * 32 || Array of Result
 
|}
 
|}
   −
== Usage ==  
+
= Usage =
 
User-processes should push a common arguments struct (version=0) as well as the Arg struct. Once the applet finishes running successfully, it may return an output storage in some cases. An u8 status value is located at +1, where non-zero indicates error.
 
User-processes should push a common arguments struct (version=0) as well as the Arg struct. Once the applet finishes running successfully, it may return an output storage in some cases. An u8 status value is located at +1, where non-zero indicates error.
    
[[Category:Library Applets]]
 
[[Category:Library Applets]]