This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Improve strace to log most Windows debug events


On 10/06/2015 18:23, Corinna Vinschen wrote:
On Jun 10 17:44, Corinna Vinschen wrote:
On Jun 10 16:18, Corinna Vinschen wrote:
On Jun 10 16:11, Corinna Vinschen wrote:
Hi Jon,

On Jun 10 13:05, Jon TURNEY wrote:
Not sure if this is wanted, but on a couple of occasions recently I have been
presented with strace output which contains an exception at an address in an
unknown module (i.e. not in the cygwin DLL or the main executable), so here is a
patch which adds some more information, including DLL load addresses, to help
interpret such straces.

That's a nice addition.  Two points, though:

- Do we *always* want that output or do we want a way to switch it on
   and off?  If the latter, we can simply add another _STRACE_foo option
   for it.

I'm not sure it makes much sense to use a _STRACE_foo flag, since those form a mask applied to a set of flags emitted by the cygwin DLL.

I added a command line option to turn this additional logging off.


- The GetFileNameFromHandle function could be much simpler.  Rather than
   opening a mapping object for ev.u.LoadDll.hFile, just use the existing
   mapping object from ev.u.LoadDll.lpBaseOfDll.

     ...with the process handle taken from get_child(ev.dwProcessId).

And since I'm generally fuzzy and unclear in my first reply:

Of course, ev.u.LoadDll.lpBaseOfDll is not the mapping *object*, but the
mapping *address*.  So you neither have to call CreateFileMapping nor
MapViewOfFile.  Just call GetMappedFileNameW (get_child (ev.dwProcessId),
ev.u.LoadDll.lpBaseOfDll, ...)

This works for me resulting in Win32 pathnames.  These are only the
affected diff hunks, I omited the rest.  Does that work for you?

Btw., I don't like using MAX_PATH as maximum path length, but I think
DLL paths can't be longer anyway, so that should be ok...


diff --git a/winsup/utils/strace.cc b/winsup/utils/strace.cc
index 73096ab..0661e17 100644
--- a/winsup/utils/strace.cc
+++ b/winsup/utils/strace.cc

Yes, that seems to work.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]