You get an empty list because the PackageManager is dead, because the IPC buffer used to return the list of installed applications has grown larger than the buffer size of 1 MB (according to version 4.4).
Starting with API 15, the same behavior will generate TransactionTooLargeException. In API <15, only an empty list is returned, and sometimes a small error is visible in logcats.
getInstalledPackages() . , . , , , IPC- .