duckduckgo / duckduckgo/Android

[Bug] Crashes every time on start

Open
#3,914 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug needs triage
Dominant language
Kotlin
Stars
4.8k
Forks
1.4k
Avg merge
2d 17h
Merged PRs (30d)
170

Description

Describe the bug

Every time I attempt to start DuckDuckGo, it crashes without ever opening.

How to Reproduce
  1. Tap on the DuckDuckGo icon
  2. Get a message (in a few seconds) stating "DuckDuckGo has stopped Open app again"
Expected behavior

I expect the application to run.

Environment
- DDG App Version: 5.177.1
- Device: Teclast T10 tablet
- OS: Android 7.0

The log file generated:


[11-23 10:46:15.428 691:707 I/ActivityManager]
START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher bnds=[906,360][1280,596]} from uid 10011 on display 0

[11-23 10:46:15.483 691:7815 I/ActivityManager]
Start proc 5660:com.duckduckgo.mobile.android/u0a90 for activity com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher

[11-23 10:46:16.254 691:7131 I/ActivityManager]
START u0 {cmp=com.duckduckgo.mobile.android/com.duckduckgo.app.onboarding.ui.OnboardingActivity} from uid 10090 on display 0

[11-23 10:46:16.611 5660:5708 I/WM-WorkerWrapper]
Work [ id=4678c155-7c56-4539-8148-f139e797b60d, tags={ DATA_REMOVAL_AD_CLICK_WORKER_TAG, com.duckduckgo.adclick.impl.DataRemovalAdClickWorker } ] was cancelled
java.util.concurrent.CancellationException: Task was cancelled.
        at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

[11-23 10:46:16.627 5660:5708 I/WM-WorkerWrapper]
Work [ id=0b128f15-57bf-4e6f-9e97-c4d7eaad7c87, tags={ DAILY_REPORTING_AD_CLICK_WORKER_TAG, com.duckduckgo.adclick.impl.pixels.AdClickDailyReportingWorker } ] was cancelled
java.util.concurrent.CancellationException: Task was cancelled.
        at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

[11-23 10:46:16.637 5660:5708 I/WM-WorkerWrapper]
Work [ id=5e402450-f583-4870-a811-f7dd64ee7a4f, tags={ com.duckduckgo.mobile.android.vpn.heartbeat.VpnServiceHeartbeatMonitorWorker, VpnServiceHeartbeatMonitorWorker } ] was cancelled
java.util.concurrent.CancellationException: Task was cancelled.
        at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

[11-23 10:46:16.652 5660:5708 I/WM-WorkerWrapper]
Work [ id=2bcea419-f997-4b84-89c2-8e36300757b7, tags={ PRIVACY_CONFIG_DOWNLOADER_WORKER_TAG, com.duckduckgo.privacy.config.impl.workers.PrivacyConfigDownloadWorker } ] was cancelled
java.util.concurrent.CancellationException: Task was cancelled.
        at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

[11-23 10:46:16.665 5660:5706 I/WM-WorkerWrapper]
Work [ id=f5abe9d5-228e-4c8a-896f-8d765c78e4af, tags={ com.duckduckgo.remote.messaging.impl.RemoteMessagingConfigDownloadWorker, REMOTE_MESSAGING_DOWNLOADER_WORKER_TAG } ] was cancelled
java.util.concurrent.CancellationException: Task was cancelled.
        at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

[11-23 10:46:17.144 691:7333 I/WindowManager]
Destroying surface Surface(name=com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.WindowManagerService.tryStartExitingAnimation:3021 com.android.server.wm.WindowManagerService.relayoutWindow:2901 com.android.server.wm.Session.relayout:215 android.view.IWindowSession$Stub.onTransact:286 com.android.server.wm.Session.onTransact:136 

[11-23 10:46:17.180 5660:5696 E/AndroidRuntime]
FATAL EXCEPTION: main
Process: com.duckduckgo.mobile.android, PID: 5660
java.lang.RuntimeException: Canvas: trying to draw too large(114308160bytes) bitmap.
        at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
        at android.graphics.Canvas.drawBitmap(Canvas.java:1415)
        at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
        at android.view.View.getDrawableRenderNode(View.java:17313)
        at android.view.View.drawBackground(View.java:17249)
        at android.view.View.draw(View.java:17061)
        at android.view.View.updateDisplayListIfDirty(View.java:16052)
        at android.view.View.draw(View.java:16836)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
        at android.view.View.draw(View.java:17073)
        at androidx.viewpager.widget.ViewPager.draw(ViewPager.java:2426)
        at android.view.View.updateDisplayListIfDirty(View.java:16052)
        at android.view.View.draw(View.java:16836)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1994)
        at android.view.View.draw(View.java:17073)
        at android.view.View.updateDisplayListIfDirty(View.java:16052)
        at android.view.View.draw(View.java:16836)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
        at android.view.View.updateDisplayListIfDirty(View.java:16047)
        at android.view.View.draw(View.java:16836)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
        at android.view.View.updateDisplayListIfDirty(View.java:16047)
        at android.view.View.draw(View.java:16836)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
        at android.view.View.updateDisplayListIfDirty(View.java:16047)
        at android.view.View.draw(View.java:16836)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
        at android.view.View.updateDisplayListIfDirty(View.java:16047)
        at android.view.View.draw(View.java:16836)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
        at android.view.View.draw(View.java:17073)
        at com.android.internal.policy.DecorView.draw(DecorView.java:751)
        at android.view.View.updateDisplayListIfDirty(View.java:16052)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:656)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:662)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:770)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:2796)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2604)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2211)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
        at android.view.Choreographer.doCallbacks(Choreographer.java:683)
        at android.view.Choreographer.doFrame(Choreographer.java:619)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

[11-23 10:46:17.182 691:1952 W/ActivityManager]
  Force finishing activity com.duckduckgo.mobile.android/com.duckduckgo.app.onboarding.ui.OnboardingActivity

[11-23 10:46:17.466 691:1843 W/InputDispatcher]
channel 'eadaa6 com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher (server)' ~ Consumer closed input channel or an error occurred.  events=0x9

[11-23 10:46:17.466 691:1843 E/InputDispatcher]
channel 'eadaa6 com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher (server)' ~ Channel is unrecoverably broken and will be disposed!

[11-23 10:46:17.466 691:1843 W/InputDispatcher]
channel 'e3381df com.duckduckgo.mobile.android/com.duckduckgo.app.onboarding.ui.OnboardingActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9

[11-23 10:46:17.466 691:1843 E/InputDispatcher]
channel 'e3381df com.duckduckgo.mobile.android/com.duckduckgo.app.onboarding.ui.OnboardingActivity (server)' ~ Channel is unrecoverably broken and will be disposed!

[11-23 10:46:17.471 691:7410 I/ActivityManager]
Process com.duckduckgo.mobile.android (pid 5660) has died

[11-23 10:46:17.471 691:7410 W/ActivityManager]
Scheduling restart of crashed service com.duckduckgo.mobile.android/androidx.work.impl.background.systemjob.SystemJobService in 1000ms

[11-23 10:46:17.480 691:3231 I/WindowManager]
WIN DEATH: Window{eadaa6 u0 com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher}

[11-23 10:46:17.480 691:3231 W/InputDispatcher]
Attempted to unregister already unregistered input channel 'eadaa6 com.duckduckgo.mobile.android/com.duckduckgo.app.launch.Launcher (server)'

[11-23 10:46:17.491 691:2447 I/WindowManager]
WIN DEATH: Window{e3381df u0 com.duckduckgo.mobile.android/com.duckduckgo.app.onboarding.ui.OnboardingActivity}

[11-23 10:46:17.491 691:2447 W/InputDispatcher]
Attempted to unregister already unregistered input channel 'e3381df com.duckduckgo.mobile.android/com.duckduckgo.app.onboarding.ui.OnboardingActivity (server)'

[11-23 10:46:17.492 691:2447 I/WindowManager]
Destroying surface Surface(name=com.duckduckgo.mobile.android/com.duckduckgo.app.onboarding.ui.OnboardingActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.removeLocked:1449 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2482 com.android.server.wm.WindowManagerService.removeWindowLocked:2440 com.android.server.wm.WindowState$DeathRecipient.binderDied:1780 android.os.BinderProxy.sendDeathNotice:688 <bottom of call stack> 

[11-23 10:46:17.528 691:725 I/WindowManager]
Destroying surface Surface(name=Starting com.duckduckgo.mobile.android) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.removeLocked:1449 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2482 com.android.server.wm.WindowManagerService.removeWindowLocked:2440 com.android.server.wm.WindowManagerService.removeWindowLocked:2309 com.android.server.wm.WindowManagerService.removeWindow:2304 com.android.server.wm.Session.remove:193 

[11-23 10:46:17.578 691:1952 W/ActivityManager]
Ignoring remove of inactive process: ProcessRecord{ae74540 0:com.duckduckgo.mobile.android/u0a90}

[11-23 10:46:17.593 691:7257 I/WindowManager]
Destroying surface Surface(name=Application Error: com.duckduckgo.mobile.android) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.destroyOrSaveSurface:2073 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementInner:429 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop:232 com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement:180 com.android.server.wm.WindowManagerService.relayoutWindow:2940 com.android.server.wm.Session.relayout:215 

[11-23 10:56:17.609 691:691 I/ActivityManager]
Start proc 5848:com.duckduckgo.mobile.android/u0a90 for service com.duckduckgo.mobile.android/androidx.work.impl.background.systemjob.SystemJobService

[11-23 10:56:18.737 5848:5891 I/WM-WorkerWrapper]
Work [ id=542cf27a-1374-4bbc-8106-e9dcf5ea3f54, tags={ PRIVACY_CONFIG_DOWNLOADER_WORKER_TAG, com.duckduckgo.privacy.config.impl.workers.PrivacyConfigDownloadWorker } ] was cancelled
java.util.concurrent.CancellationException: Task was cancelled.
        at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

[11-23 10:56:18.752 5848:5891 I/WM-WorkerWrapper]
Work [ id=ba77969f-fd0b-42a3-8754-43a1c95a4399, tags={ com.duckduckgo.remote.messaging.impl.RemoteMessagingConfigDownloadWorker, REMOTE_MESSAGING_DOWNLOADER_WORKER_TAG } ] was cancelled
java.util.concurrent.CancellationException: Task was cancelled.
        at androidx.work.impl.utils.futures.AbstractFuture.cancellationExceptionWithCause(AbstractFuture.java:1184)
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:514)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)

[11-23 10:56:18.859 5848:5893 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=23340447-9747-4f90-a50e-1c4b719d9f30, tags={ DATA_REMOVAL_AD_CLICK_WORKER_TAG, com.duckduckgo.adclick.impl.DataRemovalAdClickWorker } ]

[11-23 10:56:18.912 5848:5893 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=e1d55893-3edd-45f5-af1e-5c3e790ce575, tags={ DAILY_REPORTING_AD_CLICK_WORKER_TAG, com.duckduckgo.adclick.impl.pixels.AdClickDailyReportingWorker } ]

[11-23 10:56:18.938 5848:5891 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=8cb72bdb-2069-433c-b2a8-23dc7fff9617, tags={ com.duckduckgo.mobile.android.vpn.heartbeat.VpnServiceHeartbeatMonitorWorker, VpnServiceHeartbeatMonitorWorker } ]

[11-23 10:56:18.962 5848:5891 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=e1e05119-83db-4397-a6db-e6d37112b4a8, tags={ com.duckduckgo.sync.impl.pixels.SyncDailyReportingWorker, DAILY_REPORTING_SYNC_WORKER_TAG } ]

[11-23 10:56:20.514 5848:5892 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=94882200-06eb-4d3a-8eb7-6002c3b19ad7, tags={ com.duckduckgo.remote.messaging.impl.RemoteMessagingConfigDownloadWorker, REMOTE_MESSAGING_DOWNLOADER_WORKER_TAG } ]

[11-23 10:56:21.350 5848:5877 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=8b199974-ebcd-415d-9953-4ccfa4d86ed6, tags={ PRIVACY_CONFIG_DOWNLOADER_WORKER_TAG, com.duckduckgo.privacy.config.impl.workers.PrivacyConfigDownloadWorker } ]

[11-23 10:56:26.864 5848:5891 I/WM-WorkerWrapper]
Worker result SUCCESS for Work [ id=3e012b7d-3cbd-4dd0-bc88-906e399c8fc5, tags={ AppConfigurationWorker, com.duckduckgo.app.global.job.AppConfigurationWorker } ]

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing startup on the reported Teclast T10 running Android 7.0 and inspect the Launcher and OnboardingActivity flow. Use the fatal AndroidRuntime trace as the primary lead, especially the Canvas error for a too-large bitmap; done means the app opens without that crash on the affected environment.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.