It looks like this has happened a couple of times before, with "large" drives of the time. I bet that there's something more than usually wrong with the hard drive and fsck needs more memory than usual. Let's try adding more swap space and see what happens:
Code:
mkswap /dev/hda2
swapon /dev/hda2
fsck -fay /dev/hda4
ISTR that you don't have a second drive, but if you do, and those steps didn't work, also try this:
Code:
mkswap /dev/hdb6
mkswap /dev/hdb2
swapon /dev/hdb6
swapon /dev/hdb2
fsck -fay /dev/hda4
That should add more swap space than I could possibly imagine that you need.