Steps to reproduce:
- PHP 8.2.6; Arcanist at 0e32dbc1ac8fe6ae03860640520c104fd6f8fe16
- Go to an existing dashboard, like http://phorge.localhost/dashboard/view/1/
- Select the button
- Select Tab Panel to go to http://phorge.localhost/dashboard/panel/edit/?contextPHID=PHID-DSHB-ophnrt7yzfiqm5xqtoa3&columnKey=main&panelType=tabs
- Enter tabpaneltest in the Name field.
- Select the Create Panel button.
- Go back to http://phorge.localhost/dashboard/view/1/
Expected outcome:
New panel displays This tab panel does not have any tabs yet.
Actual outcome:
New panel displays RuntimeException: substr(): Passing null to parameter #1 ($string) of type string is deprecated:
Other comments:
With Phorge's Developer Mode enabled, no stacktrace is printed in the PHP error log or in DarkConsole (after applying D25165 and D25188).
diff --git a/src/error/PhutilErrorHandler.php b/src/error/PhutilErrorHandler.php index 63d5b492..a4d8f0bf 100644 --- a/src/error/PhutilErrorHandler.php +++ b/src/error/PhutilErrorHandler.php @@ -258,7 +258,8 @@ final class PhutilErrorHandler extends Phobject { // See T13499. Convert all other runtime errors not handled in a more // specific way into runtime exceptions. - throw new RuntimeException($str); + $whatever = $str." in ".$file.":".$line; + throw new RuntimeException($whatever); } /**
adds the source file and line to the error message output:
Working around that line leads to more exceptions: