fix crash

This commit is contained in:
Josh at WLTechBlog
2025-12-12 07:57:09 -07:00
parent 87e5e0555d
commit 051b912122
3 changed files with 112 additions and 25 deletions

38
FIX_SUMMARY.md Normal file
View File

@@ -0,0 +1,38 @@
# Fix Summary: Rod Library Nil Map Panic
## Problem
The cremote daemon crashed with `panic: assignment to entry in nil map` when calling `WaitLoad()` on a page object.
## Root Cause
This is a known issue in go-rod v0.116.2 (https://github.com/go-rod/rod/issues/331).
When pages are retrieved using `browser.Pages()`, they are not fully initialized - internal maps are nil. When methods like `WaitLoad()` try to use these pages, they panic.
## Solution
Modified `daemon/daemon.go` to properly initialize pages retrieved from `browser.Pages()`:
### Changes in `findPageByID()` (lines 2363-2400):
- Added `defer/recover` to catch initialization panics
- Call `p.Info()` to initialize internal page state
- Return error if initialization fails
- Added detailed comments explaining the issue
### Changes in `getTab()` (lines 2428-2448):
- Set up console logging for pages found via `findPageByID`
- Added debug logging when caching existing tabs
- Added comments explaining when this code path is used
## Files Modified
- `daemon/daemon.go` - Added page initialization and error handling
- `error.md` - Documented the issue and fix
## Testing
✅ Code compiles successfully
✅ Proper error handling added
✅ Panic recovery in place
## Next Steps
1. Test with a scenario where daemon is restarted while browser is running
2. Verify that pages are properly initialized before use
3. Monitor for any similar panics in production