getting "out of memory" error when trying to load specific websites (am not out of RAM)

UPDATE: Rich's solution (with the checkmark) solved my problem! I also posted an answer with a workaround that may help if Rich's solution doesn't work for you. The answer that received the bounty was the best at the time, but it doesn't have an actual solution (though it helped with troubleshooting).


I'm having a problem where my computer (Macbook Pro, 8GB RAM, OS 10.8) will not to attempt to load certain websites. Nothing fixes it except for rebooting. This occurs when nothing else is obviously wrong with my computer or internet connection, and when other sites load without problems.

When this occurs, here are the errors I get:

  • Chrome: Error 13 (net::ERR_OUT_OF_MEMORY)
  • Safari: "The error is: 'The operation couldn't be completed. Cannot allocate memory.' (NSPOSIXErrorDomain:12)"
  • Firefox: No response after entering the URL and pressing return (no error message, no throbber to indicate that it's loading or trying to contact the site).
  • ping:

    PING google.com (74.125.224.135): 56 data bytes
    ping: sendto: Cannot allocate memory
    ping: sendto: Cannot allocate memory
    Request timeout for icmp_seq 0
    ping: sendto: Cannot allocate memory
    Request timeout for icmp_seq 1
    

(after which I canceled out)

The first time I noticed this, it occurred for one or two sites I tried to visit. I was still able to use facebook and google. Later in the day, the error extended to facebook and google as well. After rebooting, those sites became accessible again, but later on I became unable to access other sites (stackexchange.com, surveygizmo.com).

Some other notes:

  • I can confirm that this happens on multiple wireless networks and VPNs.
  • At the moment this was happening I had 2 GB of RAM "inactive" and 500 MB "free" out of 8 GB total, so I'm not actually out of memory. Other websites and applications are responding snappily and there's no sign of excessive swapping.
  • The response from ping seems to suggest that the problem doesn't affect DNS (though the IP address could have been cached somewhere).

I've only found one other reference to this problem, in this Apple support thread. No solution was found except for rebooting.

NOTE: This is not a problem with running out of RAM

Activity Monitor shows plenty of free / inactive memory. There's not an excessive amount of paging going on. Other websites load without problems. There may be some other kind of memory allocation error going on, but I can't imagine any way that a plain old RAM shortage would disable certain specific websites, with no other impact on performance.


Solution 1:

I wasn't able to get my network back by disabling and re-enabling TCP/IP or the Wi-Fi. It seems in my case the computer had gone to sleep with a Juniper VPN connection and when it woke back up the connection had timed out and the routes weren't cleaned up. For me, I had two computers, one working and one not, and so was able to identify the problem after running netstat -rn.

On the computer that wasn't working, I had a destination of 192.168.43.1 with a gateway of link#5. On the computer that WAS working, the gateway for that destination was the mac address of the wireless router, so I removed that route with:

sudo route delete -host 192.168.43.1

After this, I could ping my wireless router and also get back to the internet.

Some people claimed that going to Settings → Network → Wi-Fi → Advanced → Proxies and turning on Auto Proxy Discovery worked for them. I was not able to verify this as my connection was fixed by deleting the 'dead' route.

Solution 2:

This is neither a RAM nor a disk related problem.

This is a kernel problem due to a misbehaviour of one of your network interfaces. Here are a few commands to start locating the origin of this problem when it occurs:

  • netstat -mm will provide a detailed information about your buffers pool usage;
  • netstat -I en0 if your actual network interface in use is en0 (Ethernet) will show you any actual errors (Ierrs, Oerrs);
  • netstat -r will show you if your routes toward the rest of the world are correct.

This misbehaviour may be the consequence of an automatic or targeted network attack. If you suspect that you may be facing such a case, here is a way to look the truth right in the eyes:

  • leave any network application (Safari, Mail, ssh…) so as to limit your own known noise (on your network interface);
  • open a Terminal and type: /usr/bin/sudo tcpdump -i en0 (if your interface is en0 == Ethernet);
    • if the output of tcpdump stays silent, you aren't attacked, just exit this privileged application by typing control-C
    • if the output of tcpdump is flooding, you are attacked. If you are in such a case, please post an extract of this output and of the 3 above commands outputs.

Solution 3:

This should be fairly easy to track down with the sysdiagnose tool.

When you get a browser wedged and spitting errors, open terminal and add the browser name as an argument to the script: (so if Safari is crashing)

 sysdiagnose Safari

This tool will call sudo which needs you to type your password (it won't show to the screen, so type it slowly if you are new to sudo or prone to mis-type your password if you don't see it being typed).

At this point, you will get a huge system diagnosis tar.gz file stored in /private/var/tmp that you can copy to your desktop and pore over. It will be a bit like looking for a needle in a haystack - but you can be sure some resource is getting filled if a reboot makes things work until whatever bug or resource is triggered/used again.

Solution 4:

Look at your routing table (run netstat -rn on a Terminal). This issue even persists after a reboot.

I've solved similar issues I've had by disabling TCP/IP (System Preferences » Network » Wi-Fi » Advanced » TCP/IP) and re-enabling TCP/IP for Wifi/Ethernet interface.

Solution 5:

This problem is unlikely to be related to system memory, but instead to network buffers. Please show us the output of netstat -m.

What VPN software are you using? Do you see the problem when you aren't using a VPN?