Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crashes when rendering ImageComposeScene #1392

Closed
jimgoog opened this issue Nov 13, 2021 · 1 comment
Closed

Crashes when rendering ImageComposeScene #1392

jimgoog opened this issue Nov 13, 2021 · 1 comment

Comments

@jimgoog
Copy link
Collaborator

jimgoog commented Nov 13, 2021

Code in question crashes in a variety of inconsistent ways (core dump, stack traces, native code errors, etc):

fun main() {
    val scene = ImageComposeScene(100, 100) {
        CircularProgressIndicator()
    }
    for (i in 1..10000) {
        scene.render(Duration.milliseconds(i)).close()
    }
}

cc @igordmn

@igordmn
Copy link
Collaborator

igordmn commented Feb 27, 2022

Should be fixed in 1.1.0

@igordmn igordmn closed this as completed Feb 27, 2022
igordmn added a commit to JetBrains/compose-multiplatform-core that referenced this issue Feb 28, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
igordmn added a commit to JetBrains/compose-multiplatform-core that referenced this issue Mar 28, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
igordmn added a commit to JetBrains/compose-multiplatform-core that referenced this issue Mar 30, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
eymar pushed a commit to JetBrains/compose-multiplatform-core that referenced this issue Apr 18, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
eymar pushed a commit to JetBrains/compose-multiplatform-core that referenced this issue Jun 2, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
eymar pushed a commit to JetBrains/compose-multiplatform-core that referenced this issue Jun 27, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
igordmn added a commit to JetBrains/compose-multiplatform-core that referenced this issue Aug 18, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
igordmn added a commit to JetBrains/compose-multiplatform-core that referenced this issue Aug 18, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
eymar pushed a commit to JetBrains/compose-multiplatform-core that referenced this issue Oct 26, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
eymar pushed a commit to JetBrains/compose-multiplatform-core that referenced this issue Nov 16, 2022
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
eymar pushed a commit to JetBrains/compose-multiplatform-core that referenced this issue Jan 13, 2023
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains/compose-multiplatform#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
MatkovIvan pushed a commit to MatkovIvan/compose-multiplatform that referenced this issue May 10, 2023
ImageComposeScene will be introduced in the next commit. It performs in another thread, and have Unconfined coroutine dispatcher. This means all callbacks dispatched to that dispatcher will be performed in the caller thread.

For example, when GlobalSnapshotManager will sendApplyNotifications, all callbacks will be performed in Swing thread, and will race with `render`, which performs in the test thread.

To avoid that, we don't dispatch callback to coroutine dispatcher, instead we use our own dispatching inside ComposeScene via invalidate/render.

Fixes JetBrains#1392

Change-Id: I732b37dd2fa5bb03e7e8f6a001f518199360c9a1
Test: ./gradlew jvmTest desktopTest -Pandroidx.compose.multiplatformEnabled=true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants