Commit Graph

74 Commits

Author SHA1 Message Date
6e82e33ccf - display_msg and display_error -> debug prefix since in debug header
- debug_warn_err now takes LibError
- lib_error.cpp: revise error code -> string (only support liberror
now); add function to set errno from LibError
- unifont, CFont: parameter made a simple wchar_t from const wchar_t&
- mmap now sets errno
- Loader and VfsUtil function now return LibError as well
- Profile.cpp, ProfileViewer.cpp: fix int/uint/size_t warnings
- Renderer.cpp: fix cannot-generate-assignment-operator warning

This was SVN commit r3235.
2005-12-12 19:19:30 +00:00
1c1200a049 - massive overhaul of lib error code returning. int -> LibError everywhere.
- add translators from errno and GetLastError to LibError
- clarified return values of callbacks (they must return
INFO_CB_CONTINUE to continue)
- this exposed a few bugs in error handling chains (returning incorrect
values); also reduced say-nothing instances of return -1.
- move CHECK_ERR etc. macros to lib_error

This was SVN commit r3229.
2005-12-11 22:23:55 +00:00
e2f25f4598 - self test: rename stuff to SELF_TEST*; add provision for delayed all-at-once self tests (allows for init before the test and makes measuring elapsed time easier)
- config: add CONFIG_TRACE
- display_error_impl->sys_display_error
- cleaned up sysdep; add sys_ prefix everywhere and document everything
- add to vfs_load dox
- cursor: sys_cursor_load -> sys_cursor_create. sysdep code is no longer
dependent on tex; instead of calling tex_load, the caller passes a BGRA
texture in.
memcpy: huge kick in the pants for accompanying paper; now even faster.
- on_each_cpu -> sys_on_each_cpu (removed manager function also)
- wsdl: explain PeekMessage CPU usage issue

This was SVN commit r3203.
2005-12-07 03:38:39 +00:00
8c437850e6 allocators: add include guard and posix.h (needed for PROT_*)
debug: add debug_is_code_ptr and debug_is_stack_ptr
config: add CONFIG_OMIT_FP (needed for ia32_stackwalk).
h_mgr: hyperparanoid overrun detection straightjacket for key2idx - now
safe to use at any time and any unexpected changes cause access
violation.
ia32: add ia32_get_call_target, which disassembles backwards and checks
for a valid CALL instruction + its target
wdbg_sym: add win-specific walk stack function. it's quite simple and
requires EBP frames (hence CONFIG_OMIT_FP). rationale: dbghelp requires
~30 seconds (!) to start up. recent changes (tracking malloc callers via
debug_get_nth_caller) made this happen on every run, so added a
fast-path stack walker to avoid this.

This was SVN commit r3043.
2005-10-29 02:32:36 +00:00
8aa0783b97 debug_putws was causing trouble on linux when mixing char and wchar_t writes to file. accordingly, have debug_wprintf do wchar->utf8 conversion (done there instead of in debug_putws because it's needed for the filtering logic as well) and call its char* equivalent and remove debug_putws.
This was SVN commit r2998.
2005-10-24 03:20:54 +00:00
359f55700a file_open: cleanup
vfs_tree: move bucket allocator to allocators.cpp
allocators: add matrix self-test
zip: remove redundant timing code and add CHECK_ZFILE everywhere
ogl_tex: implement app hook for overriding gl upload caps
tex: add CHECK_TEX everywhere
TextureManager: only call LoadTextures once (instead of for each file
type)
debug: add hook for translating error messages; add filtering mechanism
to only show interesting debug_printfs (WIP). restructured code:
debug_puts is the sysdep part, while debug_printf does filtering and
then calls that

This was SVN commit r2990.
2005-10-23 23:57:59 +00:00
a953a8ef57 debug_assert now displays function name also. this neatly avoids the need for __func__ in every debug_warn, which also breaks on Linux. all such constructions have been removed.
This was SVN commit r2968.
2005-10-19 06:29:55 +00:00
b17fbf003d -move app-specific stuff out of lib/ and into "hooks". see new lib/app_hooks* (note X macro goodness)
-move tex_codec stuff out of tex.cpp and into tex_codec.cpp
-tex_codec: use linked list of codecs instead of array (simplifies code
and removes limit)
-ogl_tex: add override mechanism for s3tc/automipmapgen extension detect
-tired of keeping of debug_warn text in sync with function name; now use
__func__ everywhere (and emulate that with __FUNCTION__ on MSC)
-add ONCE_NOT (opposite of ONCE)
-fix 3!! stupid bugs in ia32_control87, its caller and the header that
were canceling each other out. float exceptions now enabled except for
"inexact result" (too common). (update: nicolai had already fixed 2 of
these)

This was SVN commit r2964.
2005-10-19 03:06:54 +00:00
6ff0cf4cab workaround: wdetect needs to call dir_open with absolute paths. we therefore allow this (disabling the full path conversion thing), but it's a hack.
wdbg: stripped SE_DEBUG_NAME test code (Not needed for now); also
improved breakpoint code (had a look over it).

This was SVN commit r2939.
2005-10-14 20:28:55 +00:00
1a7d67a97f dyn_array: efficient expandable array that doesn't waste mem or relocate itself. TODO: self test and dox
file: expose block size constant; always round user transfers up
tex: transform() now receives what to change, not what to achieve.
tex*: encoding works with DynArray+VFS backend
GameSetup: free g_BuildingPlacer to avoid mem leak.
fixed some warnings+bugs.

This was SVN commit r2679.
2005-09-06 22:44:48 +00:00
5299dcad86 - config: all macros are defined as 1 / 0. testing with #if allows compiler warnings (testing undefined macro) to spot misspelled macros
- debug: add provision for naming threads. allows adding current thread
name to log messages and displays their names in the debugger.
- replaced various if(err < 0) complain() sequences with new variants of
CHECK_ERR (see lib.h)
- fixes to mmgr/VC debug alloc enable code
- improved h_mgr error reporting (now complains when h_free fails)
- US -> UK english (partial)
- fix tex_load double-free bug
- move win32 mouse cursor code into sysdep
- error dialog is now topmost to make sure it's visible (was a problem)
- handle WM_QUIT before displaying error dialog (makes sure it's shown)

also as in previous 3 revisions.

This was SVN commit r2588.
2005-08-09 16:23:19 +00:00
1d69845cee snd: better snd_disable dox
ia32: fix comments and fix EBP warning
wdbg: fix bug if exception locus is unavailable
wdetect: store full DS driver path (-> version reported correctly)

This was SVN commit r2491.
2005-07-20 00:54:39 +00:00
37e7732b40 debug: add alloca fallback in case heap alloc fails (no more "not enough mem to display stack trace")
bring debug_get_nth_caller in line with debug_dump_stack; clarify
parameter dox.
use debug_get_nth_caller instead of debug_dump_stack to get exception
locus (much less evil)
fix out() clamping if buffer is full - no more chicken scratching at end
of buffer

This was SVN commit r2474.
2005-07-09 20:17:58 +00:00
9bf5316b72 wdbg, wposix, wsdl: fix some VC2005 warnings
wdbg_sym: prevent nested trees/arrays from hogging too much buffer space

This was SVN commit r2471.
2005-07-04 17:09:28 +00:00
ad98213c39 config - fix problem with stl version detect, cleanup
debug - documented
debug_stl - WIP; large changes because specialized containers were
breaking in some cases. now have to do it "right" ;p
add SLIST container and MULTISET

This was SVN commit r2461.
2005-07-03 20:47:24 +00:00
2ea40a23a3 VS2005 compatibility fixes and warning adjustments:
Updated DLLs.
Added DirectX headers/libraries, since they're not in the platform SDK.
Fixed invalid STL iterator usage.
Disabled STL in stack trace, since it breaks.
Added comments for some reported warnings.
Corrected some apparent off-by-one errors.
Defined strlen_s to strnlen.
Probably broke pre-beta2 versions of VC2005.

This was SVN commit r2454.
2005-07-02 21:42:55 +00:00
a1e149ab11 more of the asserts.. also:
- increase stack trace buffer size (needed for some complicated nested
expressions)
- fix bug in container output - no longer treat iterator (i.e.
x::iterator) as an x string (now uses match_wildcard instead of simple
string compare)
- add unicode match_wildcard
- bugfix for vectored exception handler - was always ignoring exceptions
from main thread (fixed the previous fix where it was always grabbing
all exceptions ;p)
- better array display (display less of huge arrays)
- fix nesting limit (which was too low); make sure infinite
nesting/indirection can't happen

This was SVN commit r2448.
2005-06-28 04:12:50 +00:00
634b09dec7 debug, wdbg: fix skip accounting for debug_dump_stack if context was passed
win: fix typo causing pre_main functions not to be called

This was SVN commit r2430.
2005-06-22 23:38:04 +00:00
8f9a3fc38f - config.h: massive improvements, much clearer.
- tentatively activate PCH if gcc > 3.4. remove XP_ defines (which were
undocumented; now in scripting/spidermonkey.h)
- rename some config defines
- move sysdep/debug.h to lib/debug.h (it's portable; was wrong all
along)
- grouped all debug heap related stuff to debug.h:debug_heap_*
- sysdep: fix circular include issue with debug.h

This was SVN commit r2427.
2005-06-22 03:23:22 +00:00
92e50f2992 wdbg: increase stack trace size, fix nasty typo and remove testing assert
wdbg_sym: add new tests; WIP: dumping std::vectors

This was SVN commit r2423.
2005-06-21 18:16:28 +00:00
0a0699c212 - split into symbol engine and everything else
- thread-safe init and stack trace output (more robust)
- better symbol display (no longer suppress all STL; UDT line splitting
- add debug_wprintf and debug_disable_leak_reporting
- exception handler now called from __try and vectored chain (if
supported by OS); will even work while being debugged and isn't stomped
on by some other UnhandledExceptionFilter users

This was SVN commit r2419.
2005-06-21 16:39:40 +00:00
87d055efd9 add error codes; reorder some code for better grouping; locking is now hopefully correct; symbol delimiting improved; now able to decode "which register is it stored in"; refactor dump_sym (no longer determine size; it's now only a manager); more robust stack frame treatment; dialog now usable for exceptions as well; figure out correct exception locus (SEH location is bogus).
This was SVN commit r2395.
2005-06-16 22:00:58 +00:00
dbecf93e82 WIP; fix some internal errors when in release mode: no more div-by-zero, reduced access violations.
revised get-crash-location code (very much trial+error, as StackWalk64
doesn't report errors) - it now looks to be bulletproof.
TODO: symbol addresses in release mode appear to be incorrect => value
display is completely worthless.

This was SVN commit r2376.
2005-06-05 05:10:45 +00:00
121780b733 win_internal: add DataKind (fix for dbghelp.h which left it out)
wdbg: work around several dbghelp flaws (most importantly concerning
address of symbol, which was leading to completely wrong display).
refactored sym_dump_*. also further cleanup + dox.

This was SVN commit r2373.
2005-06-04 18:17:56 +00:00
7c099ce3cf further improvements to stack trace for invalid string pointers, floats, arrays and std::string.
asserts now correctly retrieve thread context in release mode (worked
around VC problem with __asm in macros)
added sample code to enable SE_DEBUG_NAME (pending)

This was SVN commit r2361.
2005-05-31 19:00:49 +00:00
bdf84e769c WIP. significant improvements+cleanup. work continues on stack trace - still fails under some conditions in release builds.
This was SVN commit r2358.
2005-05-30 06:11:10 +00:00
f0cbe8e440 fix several shortcomings noted in the stack trace code. now handles pointers much better; all-round better parsing+formatting and more robust.
also moved some utility functions to lib.cpp

This was SVN commit r2352.
2005-05-27 04:40:29 +00:00
7179bd893e debug: fix crashlog output (now platform-independent newlines; BOM written correctly)
wdbg: major improvements to exception handler. now catches and displays
C++ exceptions (no small feat). also fixed a few bugs in stack trace;
minor improvements elsewhere.

This was SVN commit r2346.
2005-05-24 07:11:17 +00:00
641806cc22 zip, lockfree: minor comments
debug.*: move crashlog write code here
wdbg: improvements to breakpoint code. major cleanup in exception
handler; de-hackified. mostly done, not yet stress-tested when not
running in debugger

This was SVN commit r2333.
2005-05-22 22:32:58 +00:00
e4d1454fd8 slight revisions to comments.
breakpoint code looks to work, but self-test isn't yet complete.

This was SVN commit r2290.
2005-05-12 02:58:40 +00:00
add0a0aa94 give symbolic names to assert return val
wdbg: breakpoint code now compiles, untested

This was SVN commit r2288.
2005-05-11 22:49:01 +00:00
0e4624397a breakpoint WIP
This was SVN commit r2280.
2005-05-11 04:37:05 +00:00
6a0b5fa0ab ScEd: Added unit deletion. Made zoom less frustrating. Let >2 players work.
Fixed random actor props.

This was SVN commit r2109.
2005-04-03 05:02:00 +00:00
fd14510005 minor improvements: squelch warnings when dumping; debug_out an indication that is_string_ptr raised an exception
This was SVN commit r2070.
2005-03-27 18:17:03 +00:00
6908cc1062 still getting 'incorrect symbol tag' assert (SymTagBaseClass). replaced with debug_out
This was SVN commit r1986.
2005-03-10 17:01:18 +00:00
614e523c89 mmgr.h: slightly better comments / spacing
wdbg: fixed root cause of assert noted during 2005-02-05 meeting (now
skip UDT child symbols that don't have an offset, i.e. uninteresting
stuff like BaseClass symbols)

This was SVN commit r1915.
2005-02-08 21:08:00 +00:00
afbf08ab1d Avoid infinite recursion in debug_warn/assert2
This was SVN commit r1911.
2005-02-05 19:14:56 +00:00
3f71d8f6f3 mmgr: further cleanup; reduced size of struct Alloc; use caching symbol resolver in debug.cpp
lib.h: move debug_warn to debug.h; use assert2 instead of assert
wdbg: better explanation of "get current CONTEXT"; remove "tag ==
SymTagData" assert (triggered when dumping UDT)

This was SVN commit r1890.
2005-02-02 03:32:11 +00:00
a17998b91a debug_resolve_symbol now tries to return information even if one step fails; output params are zeroed.
wposix: getcwd is now a function that calls _getcwd, to cooperate with
mmgr's #define hook

This was SVN commit r1877.
2005-01-30 16:08:14 +00:00
41e2f48daf add reference to required .lib files to fix linker errors reported by stu
This was SVN commit r1860.
2005-01-29 16:43:46 +00:00
4c6713b582 again hooked up 0ad exception handler (pending cleanup of the exception code)
This was SVN commit r1852.
2005-01-28 19:11:30 +00:00
f25f6a2d70 wdbg: fix crash when exiting abnormally (alt+f4) - was erasing elements from container while iterating through it
win internal files: slight changes while looking through

This was SVN commit r1850.
2005-01-28 18:16:51 +00:00
38d6f81d71 add/update win-specific code+header file comment
This was SVN commit r1841.
2005-01-27 16:18:22 +00:00
f6c95b259d include exception handler code only if EXCEPTION_HACK_0AD is required. (since some PS-specific code leaked into wdbg.cpp, have to disable that until i get around to cleaning it up)
This was SVN commit r1836.
2005-01-27 15:22:47 +00:00
969ed22f97 - provide for 1-byte ints (debug info is weird; dunno why it's stored as such, but they exist)
- if tag != SymTagDataType, don't dump the symbol (to be safe). this is
unexpected, but Philip reports it triggered.
- assert dialog is resizeable (grr, have to do that manually)

This was SVN commit r1828.
2005-01-26 16:25:56 +00:00
e7dcbfd19e further cleanup; stack trace + dialog part done for now; will clean up exception part later (discussed with philip)
This was SVN commit r1820.
2005-01-25 23:55:49 +00:00
711bff0d3a lib.h: moved assert2 to sysdep/debug.h
mmgr: remove wdbg calls (was prototype); use sysdep/debug interface
wdbg: no longer call it dbghelp63.h; should be installed normally in
compiler dir
win_internal.h: fix inevitable MS screwups in new dbghelp.h (*sigh*)

This was SVN commit r1816.
2005-01-25 18:54:48 +00:00
0d80a05aec wdbg: much improved dbghelp stack dump, thanks to availability of new dox. should succeed with user-defined types - voodoo programming no more. benefits are reaped when using assert2 in code (recommended!) or an exception is raised.
also made "program error" dialog a bit nicer - it's now attached to
desktop and resizeable.

This was SVN commit r1814.
2005-01-25 18:42:42 +00:00
9cadcd875d lint fixes; no longer dynamically load dbghelp (can always distribute required version)
work in progress: cleaning up debug info, add functions for mmgr to
query caller

This was SVN commit r1781.
2005-01-23 18:07:34 +00:00
090ea2301a wdbg: temporarily removed LOCALIZED_TEXT so this works in another project. must find long-term solution: lib/ must not be dependent on ps/!
sysdep.h: add pick_dir
sysdep/win/win.cpp: .. and its win32 implementation

This was SVN commit r1655.
2005-01-07 00:59:52 +00:00