NSExceptionKt icon indicating copy to clipboard operation
NSExceptionKt copied to clipboard

Support throwing in composable function

Open xVemu opened this issue 2 months ago • 1 comments

Currently, crash report in Firebase Console doesn't show corresponding line in correct file, when exception is thrown inside composable. Instead, it shows Composer.kt

Is is possible to fix or change something in gradle configuration?

Code sample

TodoList.kt

@Composable
fun TodoList(someText: String? = null) {
    TextButton({
        throw RuntimeException("Test Crash")
    }) {
        Text("Add ")
    }
}
Stacktrace
          Fatal Exception: kotlin.RuntimeException
0  Asystent                       0xf94e78 kfun:pl.inno4med.asystent.TodoList$$inlined$cache$1.TodoList$$inlined$cache$1$invoke$5.TodoList$$inlined$cache$1$invoke$5$invoke$1.$<bridge-DN>invoke(){}#internal + 26 (Composer.kt:26)
1  Asystent                       0x8947d8 kfun:androidx.compose.foundation.ClickableNode#onPointerEvent(androidx.compose.ui.input.pointer.PointerEvent;androidx.compose.ui.input.pointer.PointerEventPass;androidx.compose.ui.unit.IntSize){} + 1025 (Clickable.kt:1025)
2  Asystent                       0x5aa8dc kfun:androidx.compose.ui.input.pointer.Node#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 51 (PointerInputModifierNode.kt:51)
3  Asystent                       0x5aa6c4 kfun:androidx.compose.ui.input.pointer.Node#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 429 (MutableVector.kt:429)
4  Asystent                       0x5aa6c4 kfun:androidx.compose.ui.input.pointer.Node#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 429 (MutableVector.kt:429)
5  Asystent                       0x5aa6c4 kfun:androidx.compose.ui.input.pointer.Node#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 429 (MutableVector.kt:429)
6  Asystent                       0x5a8be4 kfun:androidx.compose.ui.input.pointer.NodeParent#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 281 (HitPathTracker.kt:281)
7  Asystent                       0x6e73f0 kfun:androidx.compose.ui.scene.PlatformLayersComposeSceneImpl.processPointerInputEvent#internal + 267 (HitPathTracker.kt:267)
8  Asystent                       0x6d1824 kfun:androidx.compose.ui.scene.BaseComposeScene.BaseComposeScene$$FUNCTION_REFERENCE_FOR$processPointerInputEvent$5.$<bridge-UNN>invoke(androidx.compose.ui.input.pointer.PointerInputEvent){}androidx.compose.ui.scene.PointerEventResult#internal + 300 (BaseComposeScene.skiko.kt:300)
9  Asystent                       0x690888 kfun:androidx.compose.ui.input.pointer.SyntheticEventSender.sendInternal#internal + 1 ([K][Suspend]Functions:1)
10 Asystent                       0x6d8810 kfun:androidx.compose.ui.scene.ComposeSceneInputHandler#onPointerEvent(androidx.compose.ui.input.pointer.PointerEventType;kotlin.collections.List<androidx.compose.ui.scene.ComposeScenePointer>;androidx.compose.ui.input.pointer.PointerButtons;androidx.compose.ui.input.pointer.PointerKeyboardModifiers;androidx.compose.ui.geometry.Offset;kotlin.Long;kotlin.Any?;androidx.compose.ui.input.pointer.PointerButton?){}androidx.compose.ui.scene.PointerEventResult + 82 (SyntheticEventSender.skiko.kt:82)
11 Asystent                       0x6cf184 kfun:androidx.compose.ui.scene.BaseComposeScene#sendPointerEvent(androidx.compose.ui.input.pointer.PointerEventType;kotlin.collections.List<androidx.compose.ui.scene.ComposeScenePointer>;androidx.compose.ui.input.pointer.PointerButtons;androidx.compose.ui.input.pointer.PointerKeyboardModifiers;androidx.compose.ui.geometry.Offset;kotlin.Long;kotlin.Any?;androidx.compose.ui.input.pointer.PointerButton?){}androidx.compose.ui.scene.PointerEventResult + 246 (BaseComposeScene.skiko.kt:246)
12 Asystent                       0x6d5a38 kfun:androidx.compose.ui.scene.ComposeScene#sendPointerEvent$default(androidx.compose.ui.input.pointer.PointerEventType;kotlin.collections.List<androidx.compose.ui.scene.ComposeScenePointer>;androidx.compose.ui.input.pointer.PointerButtons;androidx.compose.ui.input.pointer.PointerKeyboardModifiers;androidx.compose.ui.geometry.Offset;kotlin.Long;kotlin.Any?;androidx.compose.ui.input.pointer.PointerButton?;kotlin.Int){}androidx.compose.ui.scene.PointerEventResult + 244 (ComposeScene.skiko.kt:244)
13 Asystent                       0x78f688 kfun:androidx.compose.ui.scene.ComposeSceneMediator.ComposeSceneMediator$$FUNCTION_REFERENCE_FOR$onTouchesEvent$14.$<bridge-UNNNN>invoke(kotlin.collections.Set<*>;platform.UIKit.UIEvent?;androidx.compose.ui.window.TouchesEventKind){}androidx.compose.ui.scene.PointerEventResult#internal + 502 (ComposeSceneMediator.uikit.kt:502)
14 Asystent                       0x7e38c4 kfun:androidx.compose.ui.window.TouchesGestureRecognizer.touchesEnded$endTouchesEvent#internal + 1 ([K][Suspend]Functions:1)
15 Asystent                       0x7de410 kfun:androidx.compose.ui.window.TouchesGestureRecognizer.touchesEnded#internal + 233 (UserInputView.uikit.kt:233)
16 Asystent                       0x1296cb4 _6f72672e6a6574627261696e732e636f6d706f73652e75693a75692f6f70742f6275696c644167656e742f776f726b2f343264346134386532663830316664302f636f6d706f73652f75692f75692f7372632f75696b69744d61696e2f6b6f746c696e2f616e64726f6964782f636f6d706f73652f75692f77696e646f772f55736572496e707574566965772e75696b69742e6b74_kncfun193
17 UIKitCore                      0x985568 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
18 UIKitCore                      0xee87e8 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
19 UIKitCore                      0x97c35c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
20 UIKitCore                      0x97c14c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
21 UIKitCore                      0xe99154 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
22 UIKitCore                      0xe78b1c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
23 UIKitCore                      0xf0320c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
24 UIKitCore                      0xf05eb0 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
25 UIKitCore                      0xefe4c4 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
26 UIKitCore                      0x3c241c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
27 UIKitCore                      0xd8d8d8 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
28 UIKitCore                      0xd8ccf4 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
29 CoreFoundation                 0x93214 (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
30 CoreFoundation                 0x9315c (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
31 CoreFoundation                 0x928e4 (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
32 CoreFoundation                 0x8d2e0 (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
33 CoreFoundation                 0x8cb98 (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
34 GraphicsServices               0x2d00 (Missing UUID a74f51a46cce30b3a5915be19c8af740)
35 UIKitCore                      0xe5ebb8 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
36 UIKitCore                      0xe62f84 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
37 SwiftUI                        0x85a66c (Missing UUID 523687d33c5d353ca71a3e83f33df3f0)
38 SwiftUI                        0x85a3a0 (Missing UUID 523687d33c5d353ca71a3e83f33df3f0)
39 SwiftUI                        0x5e5dc4 (Missing UUID 523687d33c5d353ca71a3e83f33df3f0)
40 Asystent                       0x2d7c main (iOSApp.swift)
41 ???                            0x10765d3d4 (Missing)
42 ???                            0x107742b98 (Missing)
        

xVemu avatar Oct 15 '25 11:10 xVemu

It looks like your TodoList function is being inlined. I don't think there is much we can do about that, but when I have some time I'll try and see if NSExceptionKt is stripping something useful.

rickclephas avatar Oct 16 '25 18:10 rickclephas