Anki-Android icon indicating copy to clipboard operation
Anki-Android copied to clipboard

[BUG]: AnkiDroid error when interacting with the API

Open warleysr opened this issue 1 year ago • 6 comments

Checked for duplicates?

  • [x] This issue is not a duplicate

Does it also happen in the desktop version?

  • [ ] This bug does not occur in the latest version of Anki

What are the steps to reproduce this bug?

I'm creating an app that queries AnkiDroid database to get card content, on my main screen I show the deck list to the user. I have a instance of AddContentApi and call the getDeckList() method. Sometimes when I launch my app a Toast from AnkiDroid appears saying that some error ocurred and a report was being generated.

UPDATE: The AnkiDroid toast keeps appearing very often, sometimes when getting the deck list or when reviewing a card. Checking the Logcat I got this error:

CardContentProvider/ answerCard - RuntimeException on answering card
net.ankiweb.rsdroid.exceptions.BackendInvalidInputException: card was modified: Normal(
    Review(
        ReviewState {
            scheduled_days: 302,
            elapsed_days: 786,
            ease_factor: 2.5,
            lapses: 0,
            leeched: false,
            memory_state: None,
        },
    ),
) Normal(
    Review(
        ReviewState {
            scheduled_days: 3,
            elapsed_days: 87,
            ease_factor: 2.5,
            lapses: 0,
            leeched: false,
            memory_state: None,
        },
    ),
)
	at net.ankiweb.rsdroid.exceptions.BackendInvalidInputException$Companion.fromInvalidInputError(SourceFile:40)
	at net.ankiweb.rsdroid.BackendException$Companion.fromError(SourceFile:105)
	at net.ankiweb.rsdroid.BackendKt.unpackResult(SourceFile:31)
	at net.ankiweb.rsdroid.BackendKt.access$unpackResult(SourceFile:1)
	at net.ankiweb.rsdroid.Backend$runMethodRaw$1.invoke(SourceFile:2)
	at net.ankiweb.rsdroid.Backend$runMethodRaw$1.invoke(SourceFile:1)
	at net.ankiweb.rsdroid.Backend.withBackend(SourceFile:8)
	at net.ankiweb.rsdroid.Backend.runMethodRaw(SourceFile:16)
	at anki.backend.GeneratedBackend.answerCardRaw(SourceFile:9)
	at anki.backend.GeneratedBackend.answerCard(SourceFile:15)
	at com.ichi2.libanki.sched.Scheduler.answerCard(SourceFile:4)
	at com.ichi2.anki.provider.CardContentProvider.answerCard(SourceFile:30)
	at com.ichi2.anki.provider.CardContentProvider.update(SourceFile:43)
	at android.content.ContentProvider.update(Unknown Source:20)
	at android.content.ContentProvider$Transport.update(Unknown Source:41)
	at android.content.ContentProviderNative.onTransact(Unknown Source:612)
	at android.os.Binder.execTransactInternal(Unknown Source:103)
	at android.os.Binder.execTransact(Unknown Source:16)

net.ankiweb.rsdroid.exceptions.BackendInvalidInputException: card was modified: Normal(
    Review(
        ReviewState {
            scheduled_days: 302,
            elapsed_days: 786,
            ease_factor: 2.5,
            lapses: 0,
            leeched: false,
            memory_state: None,
        },
    ),
) Normal(
    Review(
        ReviewState {
            scheduled_days: 3,
            elapsed_days: 87,
            ease_factor: 2.5,
            lapses: 0,
            leeched: false,
            memory_state: None,
        },
    ),
)
	at net.ankiweb.rsdroid.exceptions.BackendInvalidInputException$Companion.fromInvalidInputError(SourceFile:40)
	at net.ankiweb.rsdroid.BackendException$Companion.fromError(SourceFile:105)
	at net.ankiweb.rsdroid.BackendKt.unpackResult(SourceFile:31)
	at net.ankiweb.rsdroid.BackendKt.access$unpackResult(SourceFile:1)
	at net.ankiweb.rsdroid.Backend$runMethodRaw$1.invoke(SourceFile:2)
	at net.ankiweb.rsdroid.Backend$runMethodRaw$1.invoke(SourceFile:1)
	at net.ankiweb.rsdroid.Backend.withBackend(SourceFile:8)
	at net.ankiweb.rsdroid.Backend.runMethodRaw(SourceFile:16)
	at anki.backend.GeneratedBackend.answerCardRaw(SourceFile:9)
	at anki.backend.GeneratedBackend.answerCard(SourceFile:15)
	at com.ichi2.libanki.sched.Scheduler.answerCard(SourceFile:4)
	at com.ichi2.anki.provider.CardContentProvider.answerCard(SourceFile:30)
	at com.ichi2.anki.provider.CardContentProvider.update(SourceFile:43)
	at android.content.ContentProvider.update(Unknown Source:20)
	at android.content.ContentProvider$Transport.update(Unknown Source:41)
	at android.content.ContentProviderNative.onTransact(Unknown Source:612)
	at android.os.Binder.execTransactInternal(Unknown Source:103)
	at android.os.Binder.execTransact(Unknown Source:16)
Handler (android.os.Handler) {d38aed8} sending message to a Handler on a dead thread
java.lang.IllegalStateException: Handler (android.os.Handler) {d38aed8} sending message to a Handler on a dead thread
	at android.os.MessageQueue.enqueueMessage(Unknown Source:59)
	at android.os.Handler.enqueueMessage(Unknown Source:16)
	at android.os.Handler.sendMessageAtTime(Unknown Source:37)
	at android.os.Handler.sendMessageDelayed(Unknown Source:13)
	at android.os.Handler.post(Unknown Source:6)
	at android.widget.Toast$CallbackBinder.onToastHidden(Unknown Source:7)
	at android.app.ITransientNotificationCallback$Stub.onTransact(Unknown Source:21)
	at android.os.Binder.execTransactInternal(Unknown Source:118)
	at android.os.Binder.execTransact(Unknown Source:16)
Slow Binder: BpBinder transact took 794 ms, interface=android.content.pm.IPackageManager, code=5 oneway=false

Expected behaviour

Do not receive error messages when interacting with the API.

Actual behaviour

Toast messages on my app saying that a report is being generated, when I return to the AnkiDroid app a popup asks me if I want to send the report to developers. Even though the error occurs getting the deck list still works.

Debug info

AnkiDroid Version = 2.17.6 (568538896be943818ca793dd2635822265712def)

Backend Version = 0.1.34-anki23.12.1 (23.12.1 1a1d4d5419c6b57ef3baf99c9d2d9cf85d36ae0a)

Android Version = 12 (SDK 31)

ProductFlavor = play

Manufacturer = Xiaomi

Model = M2010J19SG

Hardware = qcom

Webview User Agent = Mozilla/5.0 (Linux; Android 12; M2010J19SG Build/SKQ1.211202.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.120 Mobile Safari/537.36

ACRA UUID = 5460b21c-2117-47fc-9cf3-908b997ffae9

Crash Reports Enabled = true

(Optional) Anything else you want to share?

No response

Research

  • [X] I am reporting a bug specific to AnkiDroid (Android app)
  • [X] I have checked the manual and the FAQ and could not find a solution to my issue
  • [X] (Optional) I have confirmed the issue is not resolved in the latest alpha release (instructions)

warleysr avatar May 02 '24 00:05 warleysr

Hello! 👋 Thanks for logging this issue. Please remember we are all volunteers here, so some patience may be required before we can get to the issue. Also remember that the fastest way to get resolution on an issue is to propose a change directly, https://github.com/ankidroid/Anki-Android/wiki/Contributing

welcome[bot] avatar May 02 '24 00:05 welcome[bot]

Have you checked logcat? Package com.ichi2.anki

david-allison avatar May 02 '24 00:05 david-allison

Closing the issue since I was unable to reproduce again.

warleysr avatar May 07 '24 13:05 warleysr

CardContentProvider/ answerCard - RuntimeException on answering card
net.ankiweb.rsdroid.exceptions.BackendInvalidInputException: card was modified: Normal(
    Review(
        ReviewState {
            scheduled_days: 302,
            elapsed_days: 786,
            ease_factor: 2.5,
            lapses: 0,
            leeched: false,
            memory_state: None,
        },
    ),
) Normal(
    Review(
        ReviewState {
            scheduled_days: 3,
            elapsed_days: 87,
            ease_factor: 2.5,
            lapses: 0,
            leeched: false,
            memory_state: None,
        },
    ),
)
	at net.ankiweb.rsdroid.exceptions.BackendInvalidInputException$Companion.fromInvalidInputError(SourceFile:40)
	at net.ankiweb.rsdroid.BackendException$Companion.fromError(SourceFile:105)
	at net.ankiweb.rsdroid.BackendKt.unpackResult(SourceFile:31)
	at net.ankiweb.rsdroid.BackendKt.access$unpackResult(SourceFile:1)
	at net.ankiweb.rsdroid.Backend$runMethodRaw$1.invoke(SourceFile:2)
	at net.ankiweb.rsdroid.Backend$runMethodRaw$1.invoke(SourceFile:1)
	at net.ankiweb.rsdroid.Backend.withBackend(SourceFile:8)
	at net.ankiweb.rsdroid.Backend.runMethodRaw(SourceFile:16)
	at anki.backend.GeneratedBackend.answerCardRaw(SourceFile:9)
	at anki.backend.GeneratedBackend.answerCard(SourceFile:15)
	at com.ichi2.libanki.sched.Scheduler.answerCard(SourceFile:4)
	at com.ichi2.anki.provider.CardContentProvider.answerCard(SourceFile:30)
	at com.ichi2.anki.provider.CardContentProvider.update(SourceFile:43)
	at android.content.ContentProvider.update(Unknown Source:20)
	at android.content.ContentProvider$Transport.update(Unknown Source:41)
	at android.content.ContentProviderNative.onTransact(Unknown Source:612)
	at android.os.Binder.execTransactInternal(Unknown Source:103)
	at android.os.Binder.execTransact(Unknown Source:16)

net.ankiweb.rsdroid.exceptions.BackendInvalidInputException: card was modified: Normal(
    Review(
        ReviewState {
            scheduled_days: 302,
            elapsed_days: 786,
            ease_factor: 2.5,
            lapses: 0,
            leeched: false,
            memory_state: None,
        },
    ),
) Normal(
    Review(
        ReviewState {
            scheduled_days: 3,
            elapsed_days: 87,
            ease_factor: 2.5,
            lapses: 0,
            leeched: false,
            memory_state: None,
        },
    ),
)
	at net.ankiweb.rsdroid.exceptions.BackendInvalidInputException$Companion.fromInvalidInputError(SourceFile:40)
	at net.ankiweb.rsdroid.BackendException$Companion.fromError(SourceFile:105)
	at net.ankiweb.rsdroid.BackendKt.unpackResult(SourceFile:31)
	at net.ankiweb.rsdroid.BackendKt.access$unpackResult(SourceFile:1)
	at net.ankiweb.rsdroid.Backend$runMethodRaw$1.invoke(SourceFile:2)
	at net.ankiweb.rsdroid.Backend$runMethodRaw$1.invoke(SourceFile:1)
	at net.ankiweb.rsdroid.Backend.withBackend(SourceFile:8)
	at net.ankiweb.rsdroid.Backend.runMethodRaw(SourceFile:16)
	at anki.backend.GeneratedBackend.answerCardRaw(SourceFile:9)
	at anki.backend.GeneratedBackend.answerCard(SourceFile:15)
	at com.ichi2.libanki.sched.Scheduler.answerCard(SourceFile:4)
	at com.ichi2.anki.provider.CardContentProvider.answerCard(SourceFile:30)
	at com.ichi2.anki.provider.CardContentProvider.update(SourceFile:43)
	at android.content.ContentProvider.update(Unknown Source:20)
	at android.content.ContentProvider$Transport.update(Unknown Source:41)
	at android.content.ContentProviderNative.onTransact(Unknown Source:612)
	at android.os.Binder.execTransactInternal(Unknown Source:103)
	at android.os.Binder.execTransact(Unknown Source:16)
Handler (android.os.Handler) {d38aed8} sending message to a Handler on a dead thread
java.lang.IllegalStateException: Handler (android.os.Handler) {d38aed8} sending message to a Handler on a dead thread
	at android.os.MessageQueue.enqueueMessage(Unknown Source:59)
	at android.os.Handler.enqueueMessage(Unknown Source:16)
	at android.os.Handler.sendMessageAtTime(Unknown Source:37)
	at android.os.Handler.sendMessageDelayed(Unknown Source:13)
	at android.os.Handler.post(Unknown Source:6)
	at android.widget.Toast$CallbackBinder.onToastHidden(Unknown Source:7)
	at android.app.ITransientNotificationCallback$Stub.onTransact(Unknown Source:21)
	at android.os.Binder.execTransactInternal(Unknown Source:118)
	at android.os.Binder.execTransact(Unknown Source:16)
Slow Binder: BpBinder transact took 794 ms, interface=android.content.pm.IPackageManager, code=5 oneway=false

Reopening. This error I got when reviewing a card with the API.

warleysr avatar May 11 '24 00:05 warleysr

@warleysr Could you update the first post & title with your findings? Thanks!

david-allison avatar May 14 '24 01:05 david-allison

Someone has any idea how to approach this? I have no clue how to deal with it, just keeps happening.

8d580281-0fb5-408b-bb43-f54db1285dbe

warleysr avatar Jun 27 '24 00:06 warleysr

Hello 👋, this issue has been opened for more than 3 months with no activity on it. If the issue is still here, please keep in mind that we need community support and help to fix it! Just comment something like still searching for solutions and if you found one, please open a pull request! You have 7 days until this gets closed automatically

github-actions[bot] avatar Sep 25 '24 00:09 github-actions[bot]