Bodmer / TJpg_Decoder

Jpeg decoder library based on Tiny JPEG Decompressor
Other
227 stars 43 forks source link

Getting exception(29) sometimes when saving an image from the web using Web_Fetch functions #21

Closed bmarcu13 closed 3 years ago

bmarcu13 commented 3 years ago

Sometimes when I try to download multiple images my ESP8266 resets itself (before trying to download one of the images) giving this error:

22:31:49.969 -> Exception (29):
22:31:49.969 -> epc1=0x4000df64 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
22:31:50.062 -> 
22:31:50.062 -> >>>stack>>>
22:31:50.062 -> 
22:31:50.062 -> ctx: sys
22:31:50.110 -> sp: 3fffec10 end: 3fffffb0 offset: 0190
22:31:50.157 -> 3fffeda0:  00000006 3ffedfd8 00000002 40100448  
22:31:50.157 -> 3fffedb0:  4025bcfb 00000030 00000014 4025bc90  
22:31:50.250 -> 3fffedc0:  00000002 4025bc37 00000002 4025ad90  
22:31:50.296 -> 3fffedd0:  4025adb9 3fffee80 3ffedfd8 00000016  
22:31:50.343 -> 3fffede0:  40258820 3fffee80 3ffede84 3ffed888  
22:31:50.389 -> 3fffedf0:  3ffebbe0 3fffee80 3fffee80 4023d7a7  
22:31:50.436 -> 3fffee00:  74756c50 3fff006f 00000000 4023825f  
22:31:50.485 -> 3fffee10:  3fff0f74 00000000 00000000 3fff0df4  
22:31:50.530 -> 3fffee20:  40254b7d 00001539 00001539 40100813  
22:31:50.624 -> 3fffee30:  ffffffb1 3ffed998 3ffebbf0 3ffedfd8  
22:31:50.673 -> 3fffee40:  3ffece18 00000011 00000000 40259517  
22:31:50.718 -> 3fffee50:  00000000 3fff11c4 ffffffb1 00000000  
22:31:50.765 -> 3fffee60:  00000000 3ffedfd8 00000000 00000010  
22:31:50.812 -> 3fffee70:  3fff0f74 3fff1070 0bcadf2a 402371e2  
22:31:50.859 -> 3fffee80:  00000000 00110b0b 00320104 00000044  
22:31:50.906 -> 3fffee90:  3ffebc04 000000ce 3ffebc18 3ffebbf8  
22:31:50.953 -> 3fffeea0:  00000000 3ffebc04 3ffebc0b 3ffebc21  
22:31:51.000 -> 3fffeeb0:  00000000 00000000 3ffebc27 3ffebcb8  
22:31:51.047 -> 3fffeec0:  3ffebc41 3ffebc5d 00000000 3ffebc8f  
22:31:51.143 -> 3fffeed0:  00000000 00000000 00000011 00000000  
22:31:51.189 -> 3fffeee0:  3fff1954 40258f8a 3ffece18 3fff11c4  
22:31:51.237 -> 3fffeef0:  00000000 3ffedfd8 3ffece18 3ffebbe0  
22:31:51.283 -> 3fffef00:  3ffebbe0 000000f6 00000000 00000011  
22:31:51.331 -> 3fffef10:  00000000 3ffebbea 402626e7 3ffece18  
22:31:51.376 -> 3fffef20:  3ffebbd4 3fffdcc0 3ffe94c0 3ffe94c0  
22:31:51.423 -> 3fffef30:  00000080 3ffece18 00000000 3ffe8540  
22:31:51.518 -> 3fffef40:  40261fa7 3fffdab0 00000000 40220448  
22:31:51.518 -> 3fffef50:  3ffe94c0 40000f49 3fffdab0 40000f49  
22:31:51.612 -> 3fffef60:  40000e19 00000005 00085854 00000000  
22:31:51.612 -> 3fffef70:  00000000 aa55aa55 00000065 40104a5d  
22:31:51.707 -> 3fffef80:  40104a63 00085854 00000000 ffffffff  
22:31:51.754 -> 3fffef90:  4010000d ffffffff ffffffff ffffffff  
22:31:51.801 -> 3fffefa0:  40260e80 3fffef3c 40260e39 3ffffc38  
22:31:51.848 -> 3fffefb0:  3fffffc0 00000000 00000000 feefeffe  
22:31:51.895 -> 3fffefc0:  feefeffe feefeffe feefeffe feefeffe  
22:31:51.987 -> 3fffefd0:  feefeffe feefeffe feefeffe feefeffe  
22:31:51.987 -> 3fffefe0:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.081 -> 3fffeff0:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.081 -> 3ffff000:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.175 -> 3ffff010:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.221 -> 3ffff020:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.268 -> 3ffff030:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.314 -> 3ffff040:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.361 -> 3ffff050:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.455 -> 3ffff060:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.455 -> 3ffff070:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.549 -> 3ffff080:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.549 -> 3ffff090:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.642 -> 3ffff0a0:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.693 -> 3ffff0b0:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.738 -> 3ffff0c0:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.783 -> 3ffff0d0:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.829 -> 3ffff0e0:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.922 -> 3ffff0f0:  feefeffe feefeffe feefeffe feefeffe  
22:31:52.922 -> 3ffff100:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.016 -> 3ffff110:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.016 -> 3ffff120:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.108 -> 3ffff130:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.155 -> 3ffff140:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.203 -> 3ffff150:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.250 -> 3ffff160:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.297 -> 3ffff170:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.345 -> 3ffff180:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.390 -> 3ffff190:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.485 -> 3ffff1a0:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.485 -> 3ffff1b0:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.577 -> 3ffff1c0:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.623 -> 3ffff1d0:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.669 -> 3ffff1e0:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.716 -> 3ffff1f0:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.763 -> 3ffff200:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.856 -> 3ffff210:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.856 -> 3ffff220:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.950 -> 3ffff230:  feefeffe feefeffe feefeffe feefeffe  
22:31:53.996 -> 3ffff240:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.043 -> 3ffff250:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.089 -> 3ffff260:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.137 -> 3ffff270:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.185 -> 3ffff280:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.232 -> 3ffff290:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.279 -> 3ffff2a0:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.324 -> 3ffff2b0:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.416 -> 3ffff2c0:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.464 -> 3ffff2d0:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.511 -> 3ffff2e0:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.558 -> 3ffff2f0:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.606 -> 3ffff300:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.653 -> 3ffff310:  feefeffe feefeffe feefeffe feefeffe  
22:31:54.700 -> 3ffff320:  00000002 00000000 00000020 401002a8  
22:31:54.747 -> 3ffff330:  40101add feefeffe 00000002 401016ac  
22:31:54.841 -> 3ffff340:  3ffe93b2 4010493f 3ffeca30 feefeffe  
22:31:54.888 -> 3ffff350:  00000001 40103b1a 3ffed578 feefeffe  
22:31:54.935 -> 3ffff360:  40103f8b feefeffe feefeffe feefeffe  
22:31:54.983 -> 3ffff370:  feefeffe feefeffe feefeffe feefeffe  
22:31:55.029 -> 3ffff380:  4010384f 00040000 00000000 00040000  
22:31:55.078 -> 3ffff390:  23002200 4010384c 00040000 401002a8  
22:31:55.125 -> 3ffff3a0:  3ffed578 401027b3 00000005 401016ac  
22:31:55.173 -> 3ffff3b0:  3ffe93b5 00000000 3ffece40 feefeffe  
22:31:55.220 -> 3ffff3c0:  40102243 2c9f0300 4000050c 3fffc278  
22:31:55.314 -> 3ffff3d0:  40102604 3fffc200 00000022 40102420  
22:31:55.314 -> 3ffff3e0:  40240a1b 00000030 0000000b ffffffff  
22:31:55.408 -> 3ffff3f0:  40240794 74e3b996 c07afbdf 8e3c936a  
22:31:55.456 -> 3ffff400:  59427c3b ab063cea 57a5e60a 95bcd548  
22:31:55.502 -> 3ffff410:  759952be 5e979829 ed6509f0 c14af4bc  
22:31:55.549 -> 3ffff420:  23e47c39 876b284f 18026822 00000030  
22:31:55.595 -> 3ffff430:  be4478b4 7374cad6 5dbe1260 89d6faec  
22:31:55.688 -> 3ffff440:  d595800b 744c2d9c fe519c9f bf72d38b  
22:31:55.688 -> 3ffff450:  5c5c5c5c 5c5c5c5c 5c5c5c5c 5c5c5c5c  
22:31:55.781 -> 3ffff460:  5c5c5c5c 5c5c5c5c 5c5c5c5c 5c5c5c5c  
22:31:55.781 -> 3ffff470:  509173d4 c51882eb c831459f a468a1bb  
22:31:55.875 -> 3ffff480:  f945eeb1 5c7db5c7 59d0dbf6 2074c65f  
22:31:55.922 -> 3ffff490:  3c2c974f c49e2f24 7e2a94f1 cc0e4c88  
22:31:55.968 -> 3ffff4a0:  75f750bc 4a37d88b 634a1070 ae154e0f  
22:31:56.018 -> 3ffff4b0:  4ef2625e ca2277ab 5d6210d4 96e84f99  
22:31:56.064 -> 3ffff4c0:  762c5fa1 bf5636ae 37f90223 09428b55  
22:31:56.155 -> 3ffff4d0:  827adada 7ec80d60 e6655a59 ebb848b2  
22:31:56.155 -> 3ffff4e0:  150d094d 828d7fe0 1c59e006 4b45f3c8  
22:31:56.250 -> 3ffff4f0:  92bc672e 51490b4d 3fd5b5fd 95cecef3  
22:31:56.250 -> 3ffff500:  80000000 00000000 00000000 00000000  
22:31:56.340 -> 3ffff510:  00000000 00000000 00000000 00000300  
22:31:56.388 -> 3ffff520:  a3b99eed fc1f88b6 fde99321 d771eaba  
22:31:56.436 -> 3ffff530:  60e10988 aa834a9a 2bf15e5b 16bd2ea3  
22:31:56.483 -> 3ffff540:  010b9587 3069d9e3 8fe50cfb 00000080  
22:31:56.529 -> 3ffff550:  03030000 010000e2 eb7bdd69 0000ee1c  
22:31:56.624 -> 3ffff560:  5cecea77 6726a45a 478e2bcc cdd1086f  
22:31:56.624 -> 3ffff570:  ec1f0000 1e7a5621 a8c02bc0 5acca9cc  
22:31:56.719 -> 3ffff580:  30c0acc0 2fc02cc0 afc023c0 adc0aec0  
22:31:56.719 -> 3ffff590:  28c009c0 27c024c0 14c02dc0 13c00ac0  
22:31:56.813 -> 3ffff5a0:  32c025c0 31c02ec0 2ac004c0 29c026c0  
22:31:56.813 -> 3ffff5b0:  0f009c00 0ec005c0 9dc0a0c0 9dc09cc0  
22:31:56.909 -> 3ffff5c0:  3d002f00 a1003c00 12c003c0 35c008c0  
22:31:56.955 -> 3ffff5d0:  57b90fac 0d2676b0 76225f84 a4aa973a  
22:31:57.001 -> 3ffff5e0:  4bfd0a7a 85987046 f4f7a46b 57e73b33  
22:31:57.047 -> 3ffff5f0:  d44864de 395ea73e ccf9f5aa 1e486b71  
22:31:57.095 -> 3ffff600:  e786dfef c321d054 0924eb7f 5afeb169

Here is my code:

void loop(void) {
//  QUEUE_SIZE = Firebase.getInt(fData, "/queue_size");
  Firebase.get(dbGifFrames, "/gif_paths/1614716950720/frames");
  dbGifFrames.pauseFirebase(true);
  gifFrames = dbGifFrames.intData();
  Serial.println(gifFrames);
  for (int i = 1; i <= gifFrames; i++) {
    yield();
    String currentFramePath = "/gif_paths/1614716950720/";
    currentFramePath.concat(i);
    Firebase.getString(currentFrameLink, currentFramePath);
    gifPath = currentFrameLink.stringData();
    Serial.println(gifPath);
    String localPath = "/jp";
    localPath.concat(i);
    localPath.concat(".jpg");
    currentFrameLink.pauseFirebase(true);
    bool loaded_ok = getFile(gifPath, localPath);
    currentFrameLink.pauseFirebase(false);
  }
  while (true) {
    for (int i = 1; i <= gifFrames; i++) {
      Serial.print(i);
      Serial.print(" ");
      String pathToRender = "/jp";
      pathToRender.concat(i);
      pathToRender.concat(".jpg");
      TJpgDec.drawFsJpg(0, 0, pathToRender);
      delay(50);
    } 
    Serial.println();
  }
  delay(5000);
}

I did some research and I found this probable cause (the first answer): Stack Overflow The download library probably tries to save the image in a protected memory area. I still don't know how I can work around this though.

Bodmer commented 3 years ago

The library itself is a decoder and has no web/network download capability. Typically images are downloaded in small chunks and saved to SPIFFS or LITTLEFS, before decoding as the ESP8266 has limited RAM.

Bodmer commented 3 years ago

I assume this has been resolved - closing.