Closed Bug 112196 Opened 23 years ago Closed 23 years ago

win32 trace-malloc sybolic function names

Categories

(SeaMonkey :: General, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: blythe, Assigned: blythe)

Details

(Keywords: memory-footprint)

Attachments

(1 file)

The only thing left in order for all trace-malloc tools to work under windows is
to get the symbolic function names to work.

Right now, only a certain subset of the names get resolved by trace-malloc.

My belief is that when the win32 imghelp function SymInitialize is called, that
not all the relevant DLLs are loaded, and thus not all of their symbols are
pulled into memory and properly reported by our stack crawling code.

There are 3 possible fixes/workarounds for this:

1)  Use a static build, with no DLLs.
2)  Unverified if this works, but run it under a debugger, which will load the
symbols on your behalf.
3)  Figure out how to load the symbols on deman at runtime using SymLoadModule.


I will be attempting to resolve option #3 and finally be done with it.
Status: NEW → ASSIGNED
Keywords: footprint
Requesting for review to fix trace-malloc on win32.
adding some people in the hopes I can get this reviewed and checked in soon.
Requesting R,SR
Comment on attachment 59374 [details] [diff] [review]
Proposed changes to get all symbols to resolve under win32

>Index: mozilla/xpcom/base/nsTraceMalloc.c
>+/*
>+ * Callback used by SymGetSymFromAddrEspecial
>+ */

Looks to me like it's used from SymGetModuleInfoEspecial.

Other than that, and what brendan is commenting about, r=dbaron.
Attachment #59374 - Flags: review+
Comment on attachment 59374 [details] [diff] [review]
Proposed changes to get all symbols to resolve under win32

Use ?: and avoid FALSE != for my sanity, ok?  I.e., instead of

+    if(
+	 (FALSE != addressIncreases && addr >= aModuleBase && addr <=
(aModuleBase + aModuleSize))
+	 ||
+	 (FALSE == addressIncreases && addr <= aModuleBase && addr >=
(aModuleBase - aModuleSize))
+	 )

do this:

+    if(addressIncreases
+	? (addr >= aModuleBase && addr <= (aModuleBase + aModuleSize))
+	: (addr <= aModuleBase && addr >= (aModuleBase - aModuleSize))
+	 )

sr=brendan@mozilla.org otherwise.

/be
Attachment #59374 - Flags: review+ → superreview+
checked in after making the changes.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: