Status Update
Comments
yb...@google.com <yb...@google.com> #2
1. Have you saw crash in real device or only in simulators?
2. Do you use dynamic feature for language ID?
da...@google.com <da...@google.com> #3
Tested on Android 12 Emulator with custom executor, but cannot repro this issue.
ap...@google.com <ap...@google.com> #4
-
Second crash in the description is from a real device. Experienced it myself on two different Xiaomi phones, plus lots of crashes from users in the Google Play console.
-
Dynamic features are not used in the application.
As a wild guess, I have downgraded build tools from 31.0.0 to 30.0.3, compileSdk from 31 to 30, and moved all work with Language ID to the service in a separate process (just to be sure that crash can kill secondary process instead of main). This combination is in beta for 2 days by now and I don't see any SIGSEGV crashes.
da...@google.com <da...@google.com>
an...@google.com <an...@google.com> #5
Hmm, I feel the crash might be something related to separate/secondary process.
I also changed compileSdk and targetSDK to 31 but still cannot repro this issue.
Description
Version used: 2.2.3
Devices/Android versions reproduced on: n/a
Android Studio 3.5.3
Build #AI-191.8026.42.35.6010548, built on November 15, 2019
JRE: 1.8.0_202-release-1483-b49-5587405 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 5.3.0-24-generic
Steps to Reproduce:
1. Import the attached project into Android Studio (tested on 3.5.3)
2. Attempt to build the InterfaceSuspend module
Expected Results: A clean build
Actual Results: A build error:
error: Bookstore_Impl is not abstract and does not override abstract method loadCategoryByTransaction(String,Continuation<? super Pair<Category,? extends List<Book>>>) in Bookstore
public final class Bookstore_Impl implements Bookstore {
^
1 error
Here, Bookstore is a Kotlin interface with a @Dao annotation, defining a concrete suspending function that calls two other functions that should get code-generated:
@Dao
interface Bookstore {
@Insert
suspend fun save(category: Category)
@Insert
suspend fun save(vararg books: Book)
suspend fun loadCategoryByTransaction(shortCode: String) =
_loadCategory(shortCode) to _loadBooksInCategory(shortCode)
@Query("SELECT * FROM categories WHERE shortCode = :shortCode")
suspend fun _loadCategory(shortCode: String): Category
@Query("SELECT * FROM books WHERE categoryShortCode = :shortCode")
suspend fun _loadBooksInCategory(shortCode: String): List<Book>
}
If you switch this to be an abstract class, it compiles (see the AbstractSuspend module). If you add @Transaction to the function on the interface, it compiles (see the InterfaceTransaction module), though there's a separate bug with that (to be filed shortly).
Let me know if you need more details -- thanks!