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

Android App crash with large image #13666

Open
1 of 3 tasks
revilo951 opened this issue Oct 22, 2024 · 13 comments
Open
1 of 3 tasks

Android App crash with large image #13666

revilo951 opened this issue Oct 22, 2024 · 13 comments

Comments

@revilo951
Copy link

The bug

Android app crashes when opening a large (200MP) image.

The OS that Immich Server is running on

Docker, on Ubuntu Server 22.04

Version of Immich Server

v1.118.2

Version of Immich Mobile App

v1.118.0

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    volumes:
      - immich:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:2283
    depends_on:
      - immich-redis
      - immich-database
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    volumes:
      - /home/revilo951/docker/immich/model-cache:/cache
    env_file:
      - .env
    restart: always

  immich-redis:
    container_name: immich_redis
    image: redis:6.2-alpine@sha256:c5a607fb6e1bb15d32bbcf14db22787d19e428d59e31a5da67511b49bb0f1ccc
    restart: always

  immich-database:
    container_name: immich_postgres
    image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      DB_DATA_LOCATION: ${DB_DATA_LOCATION}
    volumes:
      - /home/revilo951/docker/immich/pgdata:/var/lib/postgresql/data
    restart: always

Your .env content

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=./library

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=snip

# The values below this line do not need to be changed
###################################################################################
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
DB_DATA_LOCATION=/home/revilo951/docker/immich/pgdata

REDIS_HOSTNAME=immich_redis

Reproduction steps

  1. Open mobile app
  2. open album
  3. open large image (200MP, 25MB)
  4. profit crash

Relevant log output

No relevant logs

Additional information

No response

@Yuvi-raj-P
Copy link
Contributor

Could you send more information about the image you’re trying to load? More of its properties, I pre assume the app is chocking either at loading the image from the server or an error is occurring when opening the image viewing page with the widgets. Could you confirm if this error also occurs when loading other images or just problems with loading this specific image? Also is the image taken from a DSLR or something, why is it that big 😅

@revilo951
Copy link
Author

It's a 200MP image from a Samsung Galaxy S23 Ultra. I use them for taking photos of server racks, so I can zoom in and read labels etc.
Here's a sample (of the lovely carpet at work 😄) that crashes the app for me. I've zipped it so that it doesn't get compressed by the file share service. https://file.io/DRKBVZtRKW1s

@aaron-iles
Copy link

aaron-iles commented Nov 3, 2024

I'm experiencing something similar. The picture is 19 MiB and 4471x6706 pixels. It loads perfectly fine in the web application. I can view it on disk without issue so it doesn't look like it is corrupt. The android app shows a fuzzy picture with an exclamation point for the thumbnail. I'm happy to send the picture privately if anyone wants to test with it.

EDIT: To be clear, the app does not crash when trying to open it but rather just displays a black image with an image icon with a slash through it.

@revilo951 revilo951 changed the title Android App crash with large immage Android App crash with large image Nov 4, 2024
@tye-mustafa
Copy link

Yes it is crashing in my case this is a video

Logs:
Message
FlutterError - Catch all

Details
Instance of 'FlutterErrorDetails'
Exception: RangeError (start): Invalid value: Not in inclusive range 0..60: 64
Library: widgets library
Context: Instance of 'ErrorDescription'

From
Immich error logger

Stack trace
#0 RangeError.checkValidRange (dart:core/errors.dart:360)
#1 ListExtensions.slice (package:collection/src/list_extensions.dart:242)
#2 RenderList.loadAssets (package:immich_mobile/widgets/asset_grid/asset_grid_data_structure.dart:104)
#3 _Section.build. (package:immich_mobile/widgets/asset_grid/immich_asset_grid_view.dart:649)
#4 _LayoutBuilderElement._rebuildWithConstraints.updateChildCallback (package:flutter/src/widgets/layout_builder.dart:191)
#5 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3038)
#6 _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:231)
#7 RenderObject.invokeLayoutCallback. (package:flutter/src/rendering/object.dart:2719)
#8 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1098)
#9 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2719)
#10 RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:278)
#11 _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:369)
#12 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#13 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#14 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#15 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#16 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#17 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:211)
#18 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#19 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:121)
#20 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:327)
#21 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#22 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:601)
#23 UnboundedRenderViewport._attemptLayout (package:scrollable_positioned_list/src/viewport.dart:281)
#24 UnboundedRenderViewport.performLayout (package:scrollable_positioned_list/src/viewport.dart:182)
#25 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#26 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#27 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#28 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#29 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#30 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#31 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#32 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#33 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#34 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#35 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#36 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#37 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#38 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#39 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#40 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#41 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1448)
#42 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#43 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#44 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#45 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61)
#46 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:595)
#47 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:622)
#48 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#49 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#50 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#51 _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:371)
#52 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#53 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#54 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#55 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61)
#56 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:595)
#57 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:622)
#58 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#59 _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:371)
#60 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#61 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61)
#62 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:595)
#63 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:622)
#64 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#65 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#66 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#67 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#68 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#69 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61)
#70 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:595)
#71 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:622)
#72 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#73 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#74 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#75 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#76 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#77 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61)
#78 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:595)
#79 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:622)
#80 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#81 RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:234)
#82 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#83 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61)
#84 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:595)
#85 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:622)
#86 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#87 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#88 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#89 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#90 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#91 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:61)
#92 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:595)
#93 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:622)
#94 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#95 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111)
#96 RenderObject.layout (package:flutter/src/rendering/object.dart:2608)
#97 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:173)
#98 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1092)
#99 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:237)
#100 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:404)
#101 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2446)
#102 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1052)
#103 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1065)
#104 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:602)
#105 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1164)
#106 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:468)
#107 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1397)
#108 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1318)
#109 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1176)
#110 _invoke (dart:ui/hooks.dart:312)
#111 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:419)
#112 _drawFrame (dart:ui/hooks.dart:283)

@alextran1502
Copy link
Contributor

@tye-mustafa is it a video you can zip up and share with me? You can send it to my email at [email protected]

@tye-mustafa
Copy link

@tye-mustafa is it a video you can zip up and share with me? You can send it to my email at [email protected]

Unable yo size is large 136mb not supported by emails

@alextran1502
Copy link
Contributor

You can put it on some cloud storage service like DropBox or GDrive, right?

@tye-mustafa
Copy link

Done

You can put it on some cloud storage service like DropBox or GDrive, right?

@tye-mustafa
Copy link

Additional info. My immich android app is keep crashing on every video

@alextran1502
Copy link
Contributor

@tye-mustafa What is your phone model and which method do you use to install the app?

@tye-mustafa
Copy link

tye-mustafa commented Dec 19, 2024

@tye-mustafa What is your phone model and which method do you use to install the app?

Redmi note 8 pro
Running latest version from github

Using vp9 as encoding videos, May be that is the reasons may be it is not supported?

Edit: it has G90 processer that supports vp9 decoding

@alextran1502
Copy link
Contributor

@tye-mustafa You can reset the transcoding policy back to default and try re transcoding a video. I think VP9 might be the issue

@tye-mustafa
Copy link

@tye-mustafa You can reset the transcoding policy back to default and try re transcoding a video. I think VP9 might be the issue

i have tested on different devices only one device is crashing while playing videos rest all are fine.

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

6 participants