OneSignal/OneSignal-Android-SDK

[Bug]: RuntimeException: Tried to schedule job for non-existent component

Closed this issue · 3 comments

What happened?

One of our users (out of thousands of people) is getting an exception thrown. This exception occurred over 25 times over the course of a couple of days for this user.

Full stack trace below:

Fatal Exception: java.lang.RuntimeException
Unable to stop activity {com.unpluq.beta/com.unpluq.beta.activities.MainActivity}: java.lang.IllegalArgumentException: Tried to schedule job for non-existent component: ComponentInfo{com.unpluq.beta/com.onesignal.core.services.SyncJobService}

android.app.ActivityThread.callActivityOnStop (ActivityThread.java:5906)
android.app.ActivityThread.performStopActivityInner (ActivityThread.java:5872)
android.app.ActivityThread.handleStopActivity (ActivityThread.java:5943)
android.app.servertransaction.StopActivityItem.execute (StopActivityItem.java:43)
android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:180)
android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:98)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:2685)
android.os.Handler.dispatchMessage (Handler.java:106)
android.os.Looper.loopOnce (Looper.java:230)
android.os.Looper.loop (Looper.java:319)
android.app.ActivityThread.main (ActivityThread.java:8919)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:578)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1103)

Caused by java.lang.IllegalArgumentException
Tried to schedule job for non-existent component: ComponentInfo{com.unpluq.beta/com.onesignal.core.services.SyncJobService}

android.os.Parcel.createExceptionOrNull (Parcel.java:3073)
android.os.Parcel.createException (Parcel.java:3053)
android.os.Parcel.readException (Parcel.java:3036)
android.os.Parcel.readException (Parcel.java:2978)
android.app.job.IJobScheduler$Stub$Proxy.schedule (IJobScheduler.java:438)
android.app.JobSchedulerImpl.schedule (JobSchedulerImpl.java:87)
com.onesignal.core.internal.background.impl.BackgroundManager.scheduleSyncServiceAsJob (BackgroundManager.kt:199)
com.onesignal.core.internal.background.impl.BackgroundManager.scheduleBackgroundSyncTask (BackgroundManager.kt:157)
com.onesignal.core.internal.background.impl.BackgroundManager.scheduleSyncTask (BackgroundManager.kt:149)
com.onesignal.core.internal.background.impl.BackgroundManager.scheduleBackground (BackgroundManager.kt:104)
com.onesignal.core.internal.background.impl.BackgroundManager.onUnfocused (BackgroundManager.kt:87)
com.onesignal.core.internal.application.impl.ApplicationService$handleLostFocus$1.invoke (ApplicationService.kt:369)
com.onesignal.core.internal.application.impl.ApplicationService$handleLostFocus$1.invoke (ApplicationService.kt:369)
com.onesignal.common.events.EventProducer.fire (EventProducer.kt:50)
com.onesignal.core.internal.application.impl.ApplicationService.handleLostFocus (ApplicationService.kt:369)
com.onesignal.core.internal.application.impl.ApplicationService.onActivityStopped (ApplicationService.kt:190)
android.app.Application.dispatchActivityStopped (Application.java:510)
android.app.Activity.dispatchActivityStopped (Activity.java:1589)
android.app.Activity.onStop (Activity.java:2789)
androidx.fragment.app.FragmentActivity.onStop (FragmentActivity.java:520)
androidx.appcompat.app.AppCompatActivity.onStop (AppCompatActivity.java:257)
android.app.Instrumentation.callActivityOnStop (Instrumentation.java:1623)
android.app.Activity.performStop (Activity.java:9236)
android.app.ActivityThread.callActivityOnStop (ActivityThread.java:5898)
android.app.ActivityThread.performStopActivityInner (ActivityThread.java:5872)
android.app.ActivityThread.handleStopActivity (ActivityThread.java:5943)
android.app.servertransaction.StopActivityItem.execute (StopActivityItem.java:43)
android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:180)
android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:98)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:2685)
android.os.Handler.dispatchMessage (Handler.java:106)
android.os.Looper.loopOnce (Looper.java:230)
android.os.Looper.loop (Looper.java:319)
android.app.ActivityThread.main (ActivityThread.java:8919)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:578)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1103)

Caused by android.os.RemoteException

Remote stack trace: at com.android.server.job.JobSchedulerService$JobSchedulerStub.enforceValidJobRequest(JobSchedulerService.java:4308) at com.android.server.job.JobSchedulerService$JobSchedulerStub.schedule(JobSchedulerService.java:4499) at android.app.job.IJobScheduler$Stub.onTransact(IJobScheduler.java:227) at android.os.Binder.execTransactInternal(Binder.java:1380) at android.os.Binder.execTransact(Binder.java:1311)

Steps to reproduce?

Not sure, only happened for one user, but from stack trace looks like somehow the component that the `com.onesignal.core.services.SyncJobService` is trying to schedule doesn't exist

What did you expect to happen?

N/A

OneSignal Android SDK version

5.1.9

Android version

14

Specific Android models

Samsung Galaxy A34 5G (only happened for one user with this device so far)

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

com.onesignal.core.services.SyncJobService should always exist. If it is only happening on one device a number of times (out of thousands) then I suspect:

  1. Samsung has a rare bug at the Operation System level.
  2. The person has a custom ROM on their device
    A. It has a bug
    B. It has some kind of custom feature attempting to block background jobs.
  3. The person has modified your app and remove this from the AndroidManifest.xml.

Yeah that makes sense. Probably okay to ignore for now

Let us know if you are able to reproduce or see more instances of the problem and we can look into it again.