KillerInk / FreeDcam

FreeDcam is a CameraApp for Android >4.0(ics) wich try to enable stuff that is forgotten by the manufacturs
GNU General Public License v2.0
295 stars 44 forks source link

Sporadically freezes in interval mode #108

Closed mvglasow closed 3 years ago

mvglasow commented 4 years ago

Today I did the endurance test for interval mode, with a 2s interval, shooting for 6 hours non-stop. At some point, however, FreeDcam simply froze and stopped responding.

To reproduce:

  1. Make sure you have ample free space on the device (for 5 MP at 95% quality, about 1 GByte/hr; it took me some 4.5h of shooting to run into the issue)
  2. Select interval mode, 2s interval, repeat indefinitely.
  3. Start taking pictures and wait.

Expected result:

No fuss, one image every 2 (or so) seconds

Actual result:

After about 4h 20min, FreeDcam stopped responding altogether. When I killed FreeDcam and tried to re-launch it, it crashed—should be visible in the log as well. Original PID was 1018, PID on relaunch was 8320.

Environment:

Further information:

Logcat here: alogcat.2020-03-01-16-45-27+0100.txt

The last image was taken at 16:26:22 The image looks OK; unfortunately the events had already rotated out of the log by the time I got around to saving it.

What seems to have happened: Apparently at some point the image did not get saved properly (hardware failure or just some kind of random hiccup in the OS—it happens with that kind of heavy usage). FreeDcam tries to read the picture it has just taken, which failed in this case. That sent FreeDcam into an endless loop of trying to re-read the picture. Having some kind of fail mechanism (e.g. skip the update this time, or show a blank image) would probably have solved this. In this case, we would lose one picture, but IMHO that is still better in a set-and-forget use case than the app stopping working altogether.

KillerInk commented 4 years ago

sounds to me like the next race condition. are the last stored images corrupt? i think this could get fixed with reducing the pressure to the single core while a capture is in progress. simplest solution is to keep the capture images in the module as long the interval runs, and on stop update the FileListController.

mvglasow commented 4 years ago

The last image file does not appear to be corrupt. The image itself looks OK, and so does the EXIF information. I also did not notice any corruption in the preceding ones.

On March 2, 2020 6:10:36 AM GMT+01:00, KillerInk notifications@github.com wrote:

sounds to me like the next race condition. are the last stored images corrupt? i think this could get fixed with reducing the pressure to the single core while a capture is in progress. simplest solution is to keep the capture images in the module as long the interval runs, and on stop update the FileListController.

-- You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub: https://github.com/KillerInk/FreeDcam/issues/108#issuecomment-593222218

-- Sent from my Android phone with K-9 Mail. Please excuse my brevity.