I've noticed a few times that when in DotNetNuke 4. "Upload Custom Module" page I had a custom module in the list, “upload new file“ link does nothing instead of importing module.
It seems related to caching issue (see problem here). I suspect that even if the file is shown in the list, it still not in cache.
It will be more reliable to check list control directly instead of cache. And why the list to upload should be saved to cache?
Additionally even if the list is empty, it is better to report about it to the user instead of silently return to module list.
The issue has been reported to DNN Support.
The workaround is described here.