JetBrains / compose-multiplatform

Compose Multiplatform, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.
https://jetbrains.com/lp/compose-multiplatform
Apache License 2.0
15.58k stars 1.13k forks source link

Skiko conflict for TencentMeeting, composeUI SkCanva::save EXC_BAD_ACCESS #5062

Closed vickyleu closed 2 weeks ago

vickyleu commented 3 weeks ago

Describe the bug I am currently using a third-party library from Tencent, which includes a Skia.framework. When I import this Skia into my Compose app through CocoaPods, running the iOS app results in an error. Removing this Skia makes everything return to normal. There are no issues on the Android platform; the problem only occurs on iOS. This has greatly affected my current work progress, and I have been searching for the cause for a long time.

Affected platforms

Versions

To Reproduce Steps to reproduce the behavior:

  1. create podspec
    Pod::Spec.new do |spec|
    spec.name                     = 'TencentMeetingSDK'
    spec.version                  = '1.0.0'
    spec.homepage                 = '.'
    spec.source                   = { :path=> '.'}
    spec.authors                  = ''
    spec.license                  = 'MIT'
    spec.summary                  = 'TencentMeetingSDK'
    spec.source_files = '**/*.{h,m}' #,swift
    spec.public_header_files = '**/*.h'
    spec.ios.deployment_target    = '13.0'
    spec.vendored_frameworks = 'Skia.framework' #Dir.glob('TencentMeetingSDK/{*}.framework') #.reject { |f| f.include?('Skia.framework') }
    spec.swift_version = '5.0'
    end
  2. cocoapods impoting
    
    pod("TencentMeetingSDK",path=project.file("src/nativeInterop/thirdparty/"))
    extraSpecAttributes["vendored_frameworks"] = """ 
           Dir.glob('${tencentMeetingPath.relativeTo(projectDir).path}/{*}.framework')${
            listOf<String>("").mapIndexed { _, s -> //Skia
            "f.include?('${s}.framework')"
        }.let {
            if(it.isNotEmpty()){
                ".reject { |f| ${it.joinToString(" || ")}  }"
            }else it.joinToString("")
        }
        } + ['framework/${project.name}.framework']
        """.trimIndent()

3. run it on 'xcode'
4. See error
```xcode
#4  0x0000000102d3631c in org_jetbrains_skia_paragraph_FontCollection__1nFindTypefaces ()
#5  0x0000000100d1eb00 in <inlined-out:<anonymous>> [inlined] at /opt/buildAgent/work/a64d3aa477d12f6b/skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/FontCollection.kt:99
#6  0x0000000100d1ea58 in kfun:org.jetbrains.skia.impl#interopScope(kotlin.Function1<org.jetbrains.skia.impl.InteropScope,0:0>){0§<kotlin.Any?>}0:0 [inlined] at /opt/buildAgent/work/a64d3aa477d12f6b/skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt:60
#7  0x0000000100d1ea58 in <inlined-out:<anonymous>> [inlined] at /opt/buildAgent/work/a64d3aa477d12f6b/skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/FontCollection.kt:98
#8  0x0000000100d1ea58 in kfun:org.jetbrains.skia#arrayDecoderScope(kotlin.Function0<org.jetbrains.skia.ArrayDecoder>;kotlin.Function1<org.jetbrains.skia.ArrayDecoder,0:0>){0§<kotlin.Any?>}0:0 [inlined] at /opt/buildAgent/work/a64d3aa477d12f6b/skiko/src/commonMain/kotlin/org/jetbrains/skia/StdVectorDecoder.kt:34
#9  0x0000000100d1ea58 in kfun:org.jetbrains.skia.paragraph.FontCollection#findTypefaces(kotlin.Array<kotlin.String>?;org.jetbrains.skia.FontStyle){}kotlin.Array<org.jetbrains.skia.Typeface?> at /opt/buildAgent/work/a64d3aa477d12f6b/skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/FontCollection.kt:98
#10 0x0000000100e591ac in kfun:androidx.compose.ui.text.platform.FontCache#loadPlatformTypes(androidx.compose.ui.text.font.FontFamily;androidx.compose.ui.text.font.FontWeight;androidx.compose.ui.text.font.FontStyle){}androidx.compose.ui.text.platform.FontLoadResult at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/PlatformFont.skiko.kt:225
#11 0x0000000100e552a4 in kfun:androidx.compose.ui.text.font.SkiaFontLoader#loadPlatformTypes(androidx.compose.ui.text.font.FontFamily;androidx.compose.ui.text.font.FontWeight;androidx.compose.ui.text.font.FontStyle){}androidx.compose.ui.text.platform.FontLoadResult at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/font/SkiaFontLoader.skiko.kt:56
#12 0x0000000100e54708 in kfun:androidx.compose.ui.text.font.PlatformFontFamilyTypefaceAdapter#resolve(androidx.compose.ui.text.font.TypefaceRequest;androidx.compose.ui.text.font.PlatformFontLoader;kotlin.Function1<androidx.compose.ui.text.font.TypefaceResult.Immutable,kotlin.Unit>;kotlin.Function1<androidx.compose.ui.text.font.TypefaceRequest,kotlin.Any>){}androidx.compose.ui.text.font.TypefaceResult? at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter.skiko.kt:30
#13 0x0000000100e0ccd0 in kfun:androidx.compose.ui.text.font.FontFamilyResolverImpl.resolve$lambda$4#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.kt:98
#14 0x0000000100e0d0b4 in kfun:androidx.compose.ui.text.font.FontFamilyResolverImpl.$resolve$lambda$4$FUNCTION_REFERENCE$3.invoke#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.kt:92
#15 0x00000001021cd6b8 in kfun:kotlin.Function1#invoke(1:0){}1:1-trampoline at /Users/vickyleu/.gradle/daemon/8.8/[K][Suspend]Functions:1
#16 0x0000000100e08a18 in kfun:androidx.compose.ui.text.font.TypefaceRequestCache#runCached(androidx.compose.ui.text.font.TypefaceRequest;kotlin.Function1<kotlin.Function1<androidx.compose.ui.text.font.TypefaceResult,kotlin.Unit>,androidx.compose.ui.text.font.TypefaceResult>){}androidx.compose.runtime.State<kotlin.Any> at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.kt:192
#17 0x0000000100e0c548 in kfun:androidx.compose.ui.text.font.FontFamilyResolverImpl.resolve#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.kt:92
#18 0x0000000100e0c3e0 in kfun:androidx.compose.ui.text.font.FontFamilyResolverImpl#resolve(androidx.compose.ui.text.font.FontFamily?;androidx.compose.ui.text.font.FontWeight;androidx.compose.ui.text.font.FontStyle;androidx.compose.ui.text.font.FontSynthesis){}androidx.compose.runtime.State<kotlin.Any> at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontFamilyResolver.kt:79
#19 0x0000000102223ff0 in kfun:androidx.compose.ui.text.font.FontFamily.Resolver#resolve(androidx.compose.ui.text.font.FontFamily?;androidx.compose.ui.text.font.FontWeight;androidx.compose.ui.text.font.FontStyle;androidx.compose.ui.text.font.FontSynthesis){}androidx.compose.runtime.State<kotlin.Any>-trampoline at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontFamily.kt:92
#20 0x0000000100e5f9d0 in <inlined-out:<anonymous>> [inlined] at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt:221
#21 0x0000000100e5f828 in kfun:kotlin#let__at__0:0(kotlin.Function1<0:0,0:1>){0§<kotlin.Any?>;1§<kotlin.Any?>}0:1 [inlined] at /opt/buildAgent/work/b2e1db4d8d903ca4/kotlin/libraries/stdlib/src/kotlin/util/Standard.kt:112
#22 0x0000000100e5f828 in kfun:androidx.compose.ui.text.platform.ComputedStyle#toSkTextStyle(androidx.compose.ui.text.font.FontFamily.Resolver){}org.jetbrains.skia.paragraph.TextStyle at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt:220
#23 0x0000000100e6c070 in kfun:androidx.compose.ui.text.platform.ParagraphBuilder.makeSkTextStyle$lambda$2#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt:545
#24 0x0000000100e6c2f8 in kfun:androidx.compose.ui.text.platform.ParagraphBuilder.$makeSkTextStyle$lambda$2$FUNCTION_REFERENCE$7.invoke#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt:544
#25 0x00000001021cd6b8 in kfun:kotlin.Function1#invoke(1:0){}1:1-trampoline at /Users/vickyleu/.gradle/daemon/8.8/[K][Suspend]Functions:1
#26 0x0000000100e41e04 in <inlined-out:<anonymous>> [inlined] at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/nativeMain/kotlin/androidx/compose/ui/text/Cache.native.kt:27
#27 0x0000000100e41df8 in kfun:kotlin.collections#getOrPut__at__kotlin.collections.MutableMap<0:0,0:1>(0:0;kotlin.Function0<0:1>){0§<kotlin.Any?>;1§<kotlin.Any?>}0:1 [inlined] at /opt/buildAgent/work/b2e1db4d8d903ca4/kotlin/libraries/stdlib/src/kotlin/collections/Maps.kt:383
#28 0x0000000100e41dbc in kfun:androidx.compose.ui.text.WeakKeysCache#get(1:0;kotlin.Function1<1:0,1:1>){}1:1 at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/nativeMain/kotlin/androidx/compose/ui/text/Cache.native.kt:27
#29 0x0000000100e6b5e0 in kfun:androidx.compose.ui.text.platform.ParagraphBuilder.makeSkTextStyle#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt:544
#30 0x0000000100e6b0c4 in kfun:androidx.compose.ui.text.platform.ParagraphBuilder.textStyleToParagraphStyle#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt:509
#31 0x0000000100e65bb0 in kfun:androidx.compose.ui.text.platform.ParagraphBuilder#build(){}org.jetbrains.skia.paragraph.Paragraph at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraph.skiko.kt:315
#32 0x0000000100e56fec in kfun:androidx.compose.ui.text.platform.ParagraphLayouter#layoutParagraph(kotlin.Float){}org.jetbrains.skia.paragraph.Paragraph at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/ParagraphLayouter.skiko.kt:167
#33 0x0000000100e6ddfc in kfun:androidx.compose.ui.text.platform.SkiaParagraphIntrinsics#<init>(kotlin.String;androidx.compose.ui.text.TextStyle;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.SpanStyle>>;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.Placeholder>>;androidx.compose.ui.unit.Density;androidx.compose.ui.text.font.FontFamily.Resolver){} at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraphIntrinsics.skiko.kt:80
#34 0x0000000100e6e9c0 in kfun:androidx.compose.ui.text.platform#ActualParagraphIntrinsics(kotlin.String;androidx.compose.ui.text.TextStyle;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.SpanStyle>>;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.Placeholder>>;androidx.compose.ui.unit.Density;androidx.compose.ui.text.font.FontFamily.Resolver){}androidx.compose.ui.text.ParagraphIntrinsics at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/skikoMain/kotlin/androidx/compose/ui/text/platform/SkiaParagraphIntrinsics.skiko.kt:37
#35 0x0000000100dceabc in kfun:androidx.compose.ui.text#ParagraphIntrinsics(kotlin.String;androidx.compose.ui.text.TextStyle;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.SpanStyle>>;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.Placeholder>>;androidx.compose.ui.unit.Density;androidx.compose.ui.text.font.FontFamily.Resolver){}androidx.compose.ui.text.ParagraphIntrinsics at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/ParagraphIntrinsics.kt:98
#36 0x0000000100dcece0 in kfun:androidx.compose.ui.text#ParagraphIntrinsics$default(kotlin.String;androidx.compose.ui.text.TextStyle;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.SpanStyle>>?;kotlin.collections.List<androidx.compose.ui.text.AnnotatedString.Range<androidx.compose.ui.text.Placeholder>>?;androidx.compose.ui.unit.Density;androidx.compose.ui.text.font.FontFamily.Resolver;kotlin.Int){}androidx.compose.ui.text.ParagraphIntrinsics at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/ParagraphIntrinsics.kt:91
#37 0x000000010136bbc4 in kfun:androidx.compose.foundation.text.modifiers.ParagraphLayoutCache.setLayoutDirection#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/ParagraphLayoutCache.kt:250
#38 0x000000010136bd24 in kfun:androidx.compose.foundation.text.modifiers.ParagraphLayoutCache.layoutText#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/ParagraphLayoutCache.kt:273
#39 0x000000010136b360 in kfun:androidx.compose.foundation.text.modifiers.ParagraphLayoutCache#layoutWithConstraints(androidx.compose.ui.unit.Constraints;androidx.compose.ui.unit.LayoutDirection){}kotlin.Boolean at /opt/buildAgent/work/8a20760945d0aeba/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/ParagraphLayoutCache.kt:183
#40 0x000000010137fa34 in kfun:androidx.compose.foundation.text.modifiers.TextStringSimpleNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult at /opt/buildAgent/work/8a20760945d0aeba/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/modifiers/TextStringSimpleNode.kt:326
#41 0x000000010223bb84 in kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt:65
#42 0x0000000100f5dc2c in <inlined-out:<anonymous>> [inlined] at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNodeCoordinator.kt:116
#43 0x0000000100f5db08 in kfun:kotlin#with(0:0;kotlin.Function1<0:0,0:1>){0§<kotlin.Any?>;1§<kotlin.Any?>}0:1 [inlined] at /opt/buildAgent/work/b2e1db4d8d903ca4/kotlin/libraries/stdlib/src/kotlin/util/Standard.kt:70
#44 0x0000000100f5db08 in <inlined-out:<anonymous>> [inlined] at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNodeCoordinator.kt:107
#45 0x0000000100f5db08 in kfun:androidx.compose.ui.node.NodeCoordinator#performingMeasure(androidx.compose.ui.unit.Constraints;kotlin.Function0<androidx.compose.ui.layout.Placeable>){}androidx.compose.ui.layout.Placeable [inlined] at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/NodeCoordinator.kt:287
#46 0x0000000100f5db08 in kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNodeCoordinator.kt:106
#47 0x000000010222bf48 in kfun:androidx.compose.ui.layout.Measurable#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/Measurable.kt:30
#48 0x0000000100ed0148 in kfun:androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/GraphicsLayerModifier.kt:646
#49 0x000000010223bb84 in kfun:androidx.compose.ui.node.LayoutModifierNode#measure__at__androidx.compose.ui.layout.MeasureScope(androidx.compose.ui.layout.Measurable;androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.MeasureResult-trampoline at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNode.kt:65
#50 0x0000000100f5dc2c in <inlined-out:<anonymous>> [inlined] at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNodeCoordinator.kt:116
#51 0x0000000100f5db08 in kfun:kotlin#with(0:0;kotlin.Function1<0:0,0:1>){0§<kotlin.Any?>;1§<kotlin.Any?>}0:1 [inlined] at /opt/buildAgent/work/b2e1db4d8d903ca4/kotlin/libraries/stdlib/src/kotlin/util/Standard.kt:70
#52 0x0000000100f5db08 in <inlined-out:<anonymous>> [inlined] at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNodeCoordinator.kt:107
#53 0x0000000100f5db08 in kfun:androidx.compose.ui.node.NodeCoordinator#performingMeasure(androidx.compose.ui.unit.Constraints;kotlin.Function0<androidx.compose.ui.layout.Placeable>){}androidx.compose.ui.layout.Placeable [inlined] at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/NodeCoordinator.kt:287
#54 0x0000000100f5db08 in kfun:androidx.compose.ui.node.LayoutModifierNodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutModifierNodeCoordinator.kt:106
#55 0x000000010223e3ec in kfun:androidx.compose.ui.node.NodeCoordinator#measure(androidx.compose.ui.unit.Constraints){}androidx.compose.ui.layout.Placeable-trampoline at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/NodeCoordinator.kt:54
#56 0x0000000100f90974 in kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.<init>$lambda$0#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNodeLayoutDelegate.kt:252
#57 0x0000000100f90b28 in kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$<init>$lambda$0$FUNCTION_REFERENCE$0.invoke#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNodeLayoutDelegate.kt:251
#58 0x0000000100f90c20 in kfun:androidx.compose.ui.node.LayoutNodeLayoutDelegate.$<init>$lambda$0$FUNCTION_REFERENCE$0.$<bridge-UNN>invoke(){}#internal at /opt/buildAgent/work/8a20760945d0aeba/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/LayoutNodeLayoutDelegate.kt:251
#59 0x00000001021cddd4 in kfun:kotlin.Function0#invoke(){}1:0-trampoline at /Users/vickyleu/.gradle/daemon/8.8/[K][Suspend]Functions:1

and error seem like random,sometime is org_jetbrains_skia_paragraph sometime is SKCanvas::save

Expected behavior not crash anymore.

Screenshots If applicable, add screenshots to help explain your problem.

Additional context

Skia.framework

Attempting above has no effect.

configurations.all {
    resolutionStrategy {
        force("org.jetbrains.skiko:skiko:0.8.9")
    }
}
vickyleu commented 3 weeks ago

@MatkovIvan

I have resolved the crash issue by renaming the third-party compiled Skia library and modifying the rpath. I also updated the rpath of the associated frameworks. Currently, there are no crashes, but the screen is blank. Upon checking the logs, I found that everything else is executing normally, except there is no display.

vickyleu commented 3 weeks ago

Very strange issue, when I remove the Tencent Meeting SDK, Compose works perfectly. When I add the SDK, the screen goes white.

No error logs are shown.

WX20240708-124655

objc[1213]: Class HangupConfig is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c5d0) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94dbd8). One of the two will be used. Which one is undefined.
objc[1213]: Class TimeStatistics is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c620) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94dc28). One of the two will be used. Which one is undefined.
objc[1213]: Class RunLoopObserverCtx is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c698) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94dca0). One of the two will be used. Which one is undefined.
objc[1213]: Class HangupMonitor is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c6c0) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94dcc8). One of the two will be used. Which one is undefined.
objc[1213]: Class PerfParam is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c710) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94dd18). One of the two will be used. Which one is undefined.
objc[1213]: Class PerfManager is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c760) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94dd68). One of the two will be used. Which one is undefined.
objc[1213]: Class FrenquencyConfig is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c7b0) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94ddb8). One of the two will be used. Which one is undefined.
objc[1213]: Class SampleConfig is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c828) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94de30). One of the two will be used. Which one is undefined.
objc[1213]: Class SampleManager is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_platform.framework/wemeet_platform (0x11773c850) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94de58). One of the two will be used. Which one is undefined.
objc[1213]: Class WMAppLifecycleInfoManager is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/wemeet_base.framework/wemeet_base (0x11055d450) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WMWhiteboardSDK.framework/WMWhiteboardSDK (0x10c34a098). One of the two will be used. Which one is undefined.
objc[1213]: Class WMAfterMeetingFeedbackView is implemented in both /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/WeMeet.framework/WeMeet (0x10c94c8a8) and /private/var/containers/Bundle/Application/71FF97DA-D5D7-42CF-B131-E4CA2A85D85D/KMMCompose.app/Frameworks/TencentMeetingSDK.framework/TencentMeetingSDK (0x10ffb9238). One of the two will be used. Which one is undefined.
2024-07-08 12:36:18.879591+0800 KMMCompose[1213:360057] Metal GPU Frame Capture Enabled
2024-07-08 12:36:18.879850+0800 KMMCompose[1213:360057] Metal API Validation Enabled

2024-07-08 12:36:20.296584+0800 KMMCompose[1213:360411] HttpLogger org.uooc.compose.network.NetworkEnvironmental.Beta@c177ef8 message:REQUEST:
vickyleu commented 3 weeks ago

Skia uses m116-47d3027-1 to compile the shared library, renames it to TencentSkia, and re-signs it. If m121 is used, SKCanvas::save will report an error regardless of whether the rpath and name are modified.

vickyleu commented 3 weeks ago

@igordmn Can anyone take a look at this issue?

igordmn commented 2 weeks ago

Moved to https://youtrack.jetbrains.com/issue/CMP-5062/Skiko-conflict-for-TencentMeeting-composeUI-SkCanvasave-EXCBADACCESS

okushnikov commented 2 weeks ago

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.