When I tried to delete a custom-made plugin, the admin wordpress page became a plain white screen with no error messages. What causes this to happen?
While I don't know exactly what code is responsible, your last comment-- " It has this uninstall.php inside that plugin's plugin root directory"-- gives me a pretty good idea of what is happening.
If the plugin can not be written without running code within the plugin, then the plugin should create a file named 'uninstall.php' in the base plugin folder. This file will be called, if it exists, during the uninstall process bypassing the uninstall hook.
When using 'uninstall.php' the plugin should always check for the WP_UNINSTALL_PLUGIN constant, before executing. The WP_UNINSTALL_PLUGIN constant is defined by WordPress at runtime during a plugin uninstall, it will not be present if 'uninstall.php' is requested directly. It will also not be present when using the uninstall hook technique. WP_UNINSTALL_PLUGIN is only defined when a uninstall.php file is found in the plugin folder.
That file either has a syntax error and triggers a fatal error, or it does something to prevent deletion. The later behavior seems a bit malicious to me, but I can't say for sure. If you were to post the code from that file a better answer may be possible.