| Allow thread errors and their traces to be properly recorded in crashdumps (#5910)
until now, any thread crash would show as a generic crash since we aren't able to get the trace from the crashed thread directly. This uses some dirty tricks to export a partially serialized stack trace to the main thread, where it can be written into a crashdump.
This enables us to see proper crash information for async tasks in the crash archive (finally!!!) as well as being able to capture RakLib errors properly. | 2 年前 |
| Mark AsyncPoolWorkerEntry as @internal
| 2 年前 |
| Update composer dependencies
| 2 个月前 |
| This timings handler management is a crap design
This has bitten me on the ass so many times now | 1 年前 |
| PHPStan 2.0 fixes
| 1 年前 |
| Align PhpDoc @param tags according to PHP-CS-Fixer
| 3 年前 |
| Use PHP-CS-Fixer to enforce file header presence
| 3 年前 |
| Use PHP-CS-Fixer to enforce file header presence
| 3 年前 |
| Separate memory dumping utilities from MemoryManager
| 1 年前 |
| Use PHP-CS-Fixer to enforce file header presence
| 3 年前 |
| Add generic types for TaskHandler (#6030)
| 1 年前 |
| Add generic types for TaskHandler (#6030)
| 1 年前 |
| Add generic types for TaskHandler (#6030)
| 1 年前 |
| Support for collecting timings from threads, and implement async task timings (#6333)
The following callbacks can now be registered in timings, to allow threads to be notified of these events:
- Turning on/off (`TimingsHandler::getToggleCallbacks()->add(...)`)
- Reset (`TimingsHandler::getReloadCallbacks()->add(...)`)
- Collect (`TimingsHandler::getCollectCallbacks()->add(...)`)
Collect callbacks must return `list<Promise>`. The promises must be `resolve()`d with `list<string>` of printed timings records, as returned by `TimingsHandler::printCurrentThreadRecords()`. It's recommended to use 1 promise per thread.
A timings report will be produced once all promises have been resolved.
This system is used internally to collect timings for async tasks (closes #6166).
For timings viewer developers:
Timings format version has been bumped to 3 to accommodate this change. Timings groups should now include a `ThreadId` at the end of timings group names to ensure that their record IDs are segregated correctly, as they could otherwise conflict between threads. The main thread is not required to specify a thread ID. See pmmp/timings@13cefa6279ee8866dc584b9a7977a9c09cecd732 for implementation examples.
New PHPStan error is caused by phpstan/phpstan#10924 | 1 年前 |
| Support for collecting timings from threads, and implement async task timings (#6333)
The following callbacks can now be registered in timings, to allow threads to be notified of these events:
- Turning on/off (`TimingsHandler::getToggleCallbacks()->add(...)`)
- Reset (`TimingsHandler::getReloadCallbacks()->add(...)`)
- Collect (`TimingsHandler::getCollectCallbacks()->add(...)`)
Collect callbacks must return `list<Promise>`. The promises must be `resolve()`d with `list<string>` of printed timings records, as returned by `TimingsHandler::printCurrentThreadRecords()`. It's recommended to use 1 promise per thread.
A timings report will be produced once all promises have been resolved.
This system is used internally to collect timings for async tasks (closes #6166).
For timings viewer developers:
Timings format version has been bumped to 3 to accommodate this change. Timings groups should now include a `ThreadId` at the end of timings group names to ensure that their record IDs are segregated correctly, as they could otherwise conflict between threads. The main thread is not required to specify a thread ID. See pmmp/timings@13cefa6279ee8866dc584b9a7977a9c09cecd732 for implementation examples.
New PHPStan error is caused by phpstan/phpstan#10924 | 1 年前 |