|
Bugzilla – Full Text Bug Listing |
| Summary: | Client crash with resolutions above 1920x1080 | ||
|---|---|---|---|
| Product: | Odamex | Reporter: | Jenova <oro.networks> |
| Component: | Client | Assignee: | Odamex Bug Reporter <odamex-bug-reporter> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | alexmax2742 |
| Priority: | P1 | ||
| Version: | 0.6.x | ||
| Hardware: | x86 (Windows, Linux, etc) | ||
| OS: | Windows | ||
| Bug Depends on: | |||
| Bug Blocks: | 900 | ||
|
Description
Jenova
2012-08-15 00:38:09 UTC
Odamex supports a maximum width of 2048 and a maximum height of 1536. However, it should not crash, but rather go to the highest supported resolution. Some valgrind output from attempting to set the video mode to something ridiculous: ==12398== Invalid write of size 4 ==12398== at 0x8233ACF: R_StoreWallRange(int, int) (r_segs.cpp:1050) ==12398== by 0x81FD3F4: R_ClipPassWallSegment(int, int) (r_bsp.cpp:250) ==12398== by 0x81FEAB1: R_AddLine(seg_s*) (r_bsp.cpp:706) ==12398== by 0x81FF386: R_Subsector(int) (r_bsp.cpp:942) ==12398== by 0x81FF4B4: R_RenderBSPNode(int) (r_bsp.cpp:974) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== Address 0x835ea40 expected vs actual: ==12398== Expected: global array "walltopf" of size 8,192 in object with soname "NONE" ==12398== Actual: global array "walltopb" of size 8,192 in object with soname "NONE" ==12398== Actual: is 0 after Expected ==12398== Invalid write of size 4 ==12398== at 0x8233C0F: R_StoreWallRange(int, int) (r_segs.cpp:1062) ==12398== by 0x81FD3F4: R_ClipPassWallSegment(int, int) (r_bsp.cpp:250) ==12398== by 0x81FEAB1: R_AddLine(seg_s*) (r_bsp.cpp:706) ==12398== by 0x81FF386: R_Subsector(int) (r_bsp.cpp:942) ==12398== by 0x81FF4B4: R_RenderBSPNode(int) (r_bsp.cpp:974) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== Address 0x8362a40 expected vs actual: ==12398== Expected: global array "wallbottomf" of size 8,192 in object with soname "NONE" ==12398== Actual: global array "wallbottomb" of size 8,192 in object with soname "NONE" ==12398== Actual: is 0 after Expected ==12398== Invalid write of size 4 ==12398== at 0x8233D7E: R_StoreWallRange(int, int) (r_segs.cpp:1078) ==12398== by 0x81FD3F4: R_ClipPassWallSegment(int, int) (r_bsp.cpp:250) ==12398== by 0x81FEAB1: R_AddLine(seg_s*) (r_bsp.cpp:706) ==12398== by 0x81FF386: R_Subsector(int) (r_bsp.cpp:942) ==12398== by 0x81FF4B4: R_RenderBSPNode(int) (r_bsp.cpp:974) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== Address 0x8360a40 expected vs actual: ==12398== Expected: global array "walltopb" of size 8,192 in object with soname "NONE" ==12398== Actual: global array "wallbottomf" of size 8,192 in object with soname "NONE" ==12398== Actual: is 0 after Expected ==12398== Invalid write of size 4 ==12398== at 0x8233ACF: R_StoreWallRange(int, int) (r_segs.cpp:1050) ==12398== by 0x81FD1CD: R_ClipSolidWallSegment(int, int) (r_bsp.cpp:149) ==12398== by 0x81FEACC: R_AddLine(seg_s*) (r_bsp.cpp:710) ==12398== by 0x81FF386: R_Subsector(int) (r_bsp.cpp:942) ==12398== by 0x81FF4B4: R_RenderBSPNode(int) (r_bsp.cpp:974) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== Address 0x835ea40 expected vs actual: ==12398== Expected: global array "walltopf" of size 8,192 in object with soname "NONE" ==12398== Actual: global array "walltopb" of size 8,192 in object with soname "NONE" ==12398== Actual: is 0 after Expected ==12398== Invalid write of size 4 ==12398== at 0x8233EF9: R_StoreWallRange(int, int) (r_segs.cpp:1093) ==12398== by 0x81FD3F4: R_ClipPassWallSegment(int, int) (r_bsp.cpp:250) ==12398== by 0x81FEAB1: R_AddLine(seg_s*) (r_bsp.cpp:706) ==12398== by 0x81FF386: R_Subsector(int) (r_bsp.cpp:942) ==12398== by 0x81FF4B4: R_RenderBSPNode(int) (r_bsp.cpp:974) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== Address 0x8364a40 expected vs actual: ==12398== Expected: global array "wallbottomb" of size 8,192 in object with soname "NONE" ==12398== Actual: unknown ==12398== Actual: is 0 after Expected ...and so on, until finally: ==12398== Process terminating with default action of signal 11 (SIGSEGV) ==12398== Bad permissions for mapped region at address 0x202953 ==12398== at 0x202953: ??? ==12398== by 0x81FD3F4: R_ClipPassWallSegment(int, int) (r_bsp.cpp:250) ==12398== by 0x81FEAB1: R_AddLine(seg_s*) (r_bsp.cpp:706) ==12398== by 0x81FF386: R_Subsector(int) (r_bsp.cpp:942) ==12398== by 0x81FF4B4: R_RenderBSPNode(int) (r_bsp.cpp:974) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== by 0x81FF44C: R_RenderBSPNode(int) (r_bsp.cpp:966) ==12398== ==12398== ERROR SUMMARY: 21 errors from 19 contexts (suppressed: 12 from 10) We need to clamp instead of allowing this to happen. r3335 committed a fix that bumped the maximum resolution up to 2880x1800, which is the native resolution of a Retina Macbook Pro. In addition, the client will refuse to set a video resolution bigger than what it can handle. Please test. This is good for now, closing... |