12

I am trying to load an image from a server.

The image is dynamically created on the server, which then passes the name [including the relative path] to the client for loading into a canvas.

There are 3 layers of canvas, setting the same size of image and loading image to one canvas.

Everything working fine for small images. But for big images, [assuming above 9000 x 7000 px] it throws “Aw Snap” blue screen error. Sometimes it managed to load the image but throw “Aw Snap” error by moving the mouse over the canvas, moving scroll bars or drawing a line over it.

I increased --disk-cache-size but didn't help.

Even Setting these values didn't help [ --disable-accelerated-2d-canvas, --blacklist-accelerated-compositing, --blacklist-webgl, --disable-accelerated-compositing, --disable-accelerated-layers]

Tested with IE and Safari - working fine but some delays.

Post your thoughts and hints. Any help is appreciated.

Here is my code

function LoadImage(imageUrl) {
    try {
        var image_View = document.getElementById("imageView");
        var image_Temp = document.getElementById("imageTemp");
        var image_Tempt = document.getElementById("imageTempt");
        var ctx = image_View.getContext("2d");

        var img = new Image();
        img.onerror = function() {
            alert('The image could not be loaded.');
        }
        img.onload = function() {
            image_View.width = img.width;
            image_View.height = img.height;
            image_Temp.width = img.width;
            image_Temp.height = img.height;
            image_Tempt.width = img.width;
            image_Tempt.height = img.height;

            ctx.clearRect(0, 0, image_View.width, image_View.height);
            ctx.drawImage(img, 1, 1, img.width, img.height);
        }

        img.src = imageUrl;
    }
    catch (err) {
        alert(err.message);
    }
}
snorkpete
  • 14,278
  • 3
  • 40
  • 57
Derin
  • 1,202
  • 1
  • 15
  • 25
  • 1
    Have you tried going to Chromes Settings -> Advanced Options -> Privacy and uncheck "Prefetch resources to load pages more quickly"? – Markai May 19 '15 at 08:22
  • 1
    Voting to close as "too broad", we can really only guess here. I would suggest reporting this to [crbug.com](http://crbug.com) as a bug. –  May 19 '15 at 10:46
  • 1
    As K3N says, we can only guess why your code fails under heavy load (probably because the load is too heavy!). I'd suggest refactoring your app to use images closer to the display size instead of being over-sized. – markE May 19 '15 at 16:08
  • 1
    It's hard to say since the question is incomplete due to not having the test image. Without this, my GUESS is usually the issue is caused using a base64 URI rather than a url pointing to a file/blob. Chrome has a URI size limit. If this is the case, see creating a temporary url which points to a ram object created from a blob via a base64 string: http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript – Radio May 28 '15 at 22:32

3 Answers3

9

"Aw Snap" means that the OS killed the Chrome process for this tab. This happens when your OS thinks that Chrome did something wrong (like when it allocates too much memory, memory corruption, outdated shared libraries after a system patch).

It's possible that Chrome needs too much memory to display such huge images. The workaround would be to cut the images into pieces ("tiling") and just display those tiles which are visible on the screen.

To find out for sure, you can run Chrome from the command line. Sometimes, it prints more descriptive error messages on the console when part of it crashes.

You should also try to apply the latest (security) patches to your OS, get the latest Chrome and reboot to make sure it's not a glitch. On my computer (16GB RAM, 1GB Video RAM), I can open a 19'000x19'000 PNG image without an error, it just takes ~20 seconds for the frame to render it.

Aaron Digulla
  • 321,842
  • 108
  • 597
  • 820
  • 1
    Tiling will be an option but the size of my image is not even half of max_size. Check this: http://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element – Derin May 20 '15 at 03:51
  • 1
    That's just the max site of the canvas element itself. The error "Aw Snap" means that your OS killed Chrome for some reason. There are many other elements which have an effect on this error: How many other tabs you have open, how much memory your OS wants to give each Chrome process, how many tabs are merged into a single process, how much memory your gfx card has free. – Aaron Digulla May 20 '15 at 09:46
  • 1
    @Derin: Try to close all other tabs and all other applications; does that help? – Aaron Digulla May 27 '15 at 09:22
  • I have tried that but not helping. Another interesting this is that it is not failing in "Chrome for Mac". Only problem with "Chrome for Windows". – Derin May 29 '15 at 01:17
  • http://superuser.com/questions/475898/why-does-chrome-crash-at-around-1-5-gb-of-memory-usage – Derin May 29 '15 at 01:18
  • For what its worth, you can enable flag for garbage collection in chrome. --js-flags="--expose-gc" and then call window.gc() – Squiggs. May 29 '15 at 18:25
0

You can debug "Aw Snap" errors enabling Chrome's logging.

To enable, launch Chrome using these command line flags:

--enable-logging --v=1

And open the Chrome's user data directory to find the file.

Zanon
  • 29,231
  • 20
  • 113
  • 126
0

Go to the property of google chrome shortcut add --no-sandbox to the end of the target field then click apply

enter image description here

Deepu Reghunath
  • 8,132
  • 2
  • 38
  • 47