Running tomato on an asus N16 router with a few optware packages loaded into /opt I experienced a very strange and repeatable bug that the output of ls through a shell login would stop working, giving just "." in red for the directory and giving corrupted data for file lengths and so forth. Other tools would fail as well.
Using strace we found that ls was pulling in libc from /opt – through a symlink to: libuClibc-0.9.28.so
[root@router lib]$ ls -l /lib/libc.so.0
-r-xr-xr-x 1 root root 435560 Nov 30 2010 /lib/libc.so.0
[root@router lib]$ ls -l /opt/lib/libuClibc*so
-rw-rr 1 root root 698368 Nov 30 2010 /opt/lib/libuClibc-0.9.28.so
renaming the symlink /opt/lib/libc.so.0 so that it wouldn’t load that library allows ls to run, but no ipkg will no longer run.