Git Product home page Git Product logo

google-breakpad's People

Watchers

 avatar

google-breakpad's Issues

CrashReportSender::SendCrashReport not proxy friendly

CrashReportSender::SendCrashReport currently calls InternetOpen() with
INTERNET_OPEN_TYPE_DIRECT, which means that no proxy will be used.  This
means that even if a proxy is configured in IE, it won't be used, which
means the connection will probably fail.  I believe you can simply change
this to INTERNET_OPEN_TYPE_PRECONFIG and the code will check the settings
in the registry and attempt to do the right thing.

Original issue reported on code.google.com by ted.mielczarek on 10 Oct 2006 at 7:32

Handle frame pointer omission

MSVC turns on /Oy (frame pointer omission) at /O1 and /O2.  Frame pointer
omission, oy!  The present StackwalkerX86 relies on %ebp as the frame
pointer and expects to be able to dereference %ebp to find the caller's
frame pointer.  stackwalker_x86.cc contains this comment:

  // If there is no frame pointer, determining the layout of the stack is
  // considerably more difficult, requiring debugging information.  This
  // stackwalker doesn't attempt to solve that problem (at this point).

Resolving this bug will require three things:

 - PDBSourceLineWriter (the dump_syms tool) will need to get stack frame
   data out of pdb files and write what we need in its output.  We can
   get this data from the pdb's FrameData table, which we access using
   the DIA IDiaFrameData and IDiaEnumFrameData APIs.
 - SourceLineResolver needs to interpret this information and make it
   available.  We can't use a RangeMap for this because of the way that
   the data is organized in a pdb: stack frame information is logically
   keyed by program counter, but blocks of stack frame information
   may enclose other blocks, possibly with identical start or end
   addresses.  (This supports different uses of the stack between
   different parts of the same function, when dictated by control
   structures or compiler optimizations.)  SourceLineResolver may want
   to be renamed.
 - StackwalkerX86 needs to find which module an instruction is in
   (which will require a slight reorganization between Stackwalker
   and the concrete StackwalkerX86) and pull stack frame information
   for an instruction out of that module's debugging information.
   When this information is available, it should be used to locate
   the position of the next stack frame.  When it is not available,
   StackwalkerX86 should continue to use %ebp as the frame pointer.

One open question is exactly how much stack frame information we need to
pull out of the pdb.  We have access to the sizes used on the stack for
locals, saved registers, and parameters.  We also have access to a "program
string," which is something we can feed to a stack machine along with a few
known bits of context and get some information out of at stackwalking time.
   The former is easy and correct when the compiler doesn't push extra
temps onto the stack outside of what we're told it's done in the debugging
info. If additional temps are pushed (i.e. if IDiaFrameData::get_maxStack
returns nonzero), it'll be wrong, though.  I haven't seen nonzero values
for maxStack yet, but I'm building a Firefox optimized build with vc8 now
to see if any turn up there.

Original issue reported on code.google.com by [email protected] on 11 Sep 2006 at 9:48

CrashReportSender::SendCrashReport should provide response body to caller

In crash_report_sender.h:
// TODO(bryner): we should expose the response to the caller.

It would be nice to get a response so the server could tell the client an
ID assigned to the crash report, for example, and then provide a web link
to look it up.


Original issue reported on code.google.com by ted.mielczarek on 4 Oct 2006 at 7:19

minidump_stackwalk should accept input from stdin

It would be cool if minidump_stackwalk would accept input from stdin, maybe
by specifying '-' for the input filename.  Since processing is likely to
occur either a) from a CGI or b) pulling the minidump from a database, it's
silly to have to write the dump data out to a tempfile just to have
minidump_stackwalk read it back in.

Original issue reported on code.google.com by ted.mielczarek on 4 Oct 2006 at 7:13

remove use of UuidToString

Attached is a patch removing the use of UuidToString and consequently
RPC_WSTR, which removes the dependency on rpcrt4.lib.  This makes life a
little easier for me, since Mozilla doesn't link with that lib by default.
 This patch basically just replaces the call to UuidToString with a call to
wsprintf.


Original issue reported on code.google.com by ted.mielczarek on 1 Oct 2006 at 12:22

Attachments:

Make build system less annoying

Presently, the build system is slightly annoying in that objects,
executables, and libraries are all placed in the root directory of the
package instead of adjacent to the relevant sources.  The automake option
to fix this is "subdir-objects."

Also, maintaining the build system is slightly awkward because configure.ac
references macros that are defined outside the source tree.  We should add
the m4 macros we use to our own repository.

I'm skeptical about the STL_NAMESPACE and GOOGLE_NAMESPACE thing anyway,
because I don't really want to export config.h.  Maybe we should just get
rid of this stuff and assume std and google_airbag everywhere.

Original issue reported on code.google.com by [email protected] on 30 Aug 2006 at 3:41

MinidumpCallback should pass full minidump path instead of just id

In ExceptionHandler::WriteMinidumpWithException, the code builds the full
path to the minidump file, but then passes just the minidump id to the
callback function, requiring me to build the full path myself in my
callback.  Since the full path is necessary to do anything useful anyway,
why not just pass the full path to the callback function?

Original issue reported on code.google.com by ted.mielczarek on 3 Oct 2006 at 1:18

Add unit testing for minidump.cc

Right now, the only test for minidump.cc runs minidump_dump on a minidump
file and compares the output to known output.  We should test the code
itself more directly (possibly by providing minidump files or fragments
that test limits?)

Original issue reported on code.google.com by [email protected] on 6 Sep 2006 at 2:59

Module API

The processor should expose a better API to get relevant information about
modules.  MinidumpModule should implement this interface, and users of
modules should not need to bring in the whole Minidump family to use it. 
The API should provide some reasonable and consistent way to get an
identifier, or set of identifiers, for a module and its debug info. 
Specifically, it should consider the uuid if one exists, and the
module/debug file name and versioning info otherwise.  We may also want to
throw some other data into the mix.

Original issue reported on code.google.com by [email protected] on 26 Sep 2006 at 6:36

ppc stackwalker

We need a StackwalkerPPC implementation to handle ppc minidumps.

Original issue reported on code.google.com by [email protected] on 21 Sep 2006 at 7:31

Windows exception handler does not survive stack overflows

The current Windows exception handler runs on the same thread that took the
exception.  If stack space is nearly exhausted (for example, when a crash
is caused by infinite recursion), the exception will not be fully handled.
 MiniDumpWriteDump will not complete.

We want to handle this case.

When an exception occurs, we are able to execute a small amount of code on
the same thread and stack that took the exception.  This code should
transfer control to a background handler thread, or move the stack to some
preallocated buffer of sufficient size.  The former's probably cleaner, and
doable entirely with standard OS calls.  The latter requires CPU-specific asm.

Original issue reported on code.google.com by [email protected] on 27 Sep 2006 at 9:15

MinidumpProcessor should process all threads

Right now, MinidumpProcessor only produces output for the crashed thread. 
It should process all threads.  I plan on handling this by defining a
struct like this:

struct ProcessState {
  // True if the process crashed, false if the dump was produced outside
  // of an exception handler.
  bool crashed;

  // If the process crashed, the type of crash.  OS- and possibly CPU-
  // specific.  For example, "EXCEPTION_ACCESS_VIOLATION" (Windows),
  // "EXC_BAD_ACCESS / KERN_INVALID_ADDRESS" (Mac OS X), "SIGSEGV"
  // (other Unix).
  string crash_reason;

  // If the process crashed, and if crash_reason implicates memory,
  // the memory address that caused the crash.
  u_int64_t crash_address;

  // If the process crashed, the index of the crashed thread's stack
  // in the threads vector.
  unsigned int crash_thread;

  // Stacks for each thread (except possibly the exception handler
  // thread) at the time of the crash.
  vector<StackFrames> threads;
};

ProcessState should possibly also contain values identifying the OS and
CPU, only because it may help to make sense out of crash_reason and the
context data I'm probably going to need to add to StackFrame or new
subclasses of StackFrame.

Original issue reported on code.google.com by [email protected] on 27 Sep 2006 at 10:13

Anonymous SVN dysfunctional

What steps will reproduce the problem?
1. go to "Source" tab
2. click on the link to browse svn repository

What is the expected output? What do you see instead?
expecting to see the source tree, but I got 'access denied' message.


Original issue reported on code.google.com by [email protected] on 25 Aug 2006 at 11:16

get rid of CrashReport

We should simplily the API for processing minidumps by getting rid of the
mostly-unused CrashReport.  Library consumers may have vastly different
requirements and it's not helpful to try to enforce this structure when we
don't even make use of the members.

Original issue reported on code.google.com by [email protected] on 19 Sep 2006 at 7:35

Check for conflicting ranges in SourceLineResolver::Module::ParseStackInfo

I stuck a TODO in SourceLineResolver::Module::ParseStackInfo about
conflicting ranges.  My current thoughts on fixing this are to store
entries in the ContainedRangeMap with base (rva + code_size) and size
(code_size - prolog_size - epilog_size), and introduce the concept of a
"replacement key", which will be the rva.  In a ContainedRangeMap, one
entry may replace another (and inherit any preexisting children) if their
dimensions are identical and the new entry's replacement key is higher than
the existing entry's.  ContainedRangeMap::StoreRange should not return
false when inserting a new entry with identical dimensions to an existing
entry, it should return true but should only modify the map in accordance
with the replacement key.  This will also cover another case of duplication
I've found in dumped symbol files: when code is optimized such that
multiple functions compile to identical code and actually share the same
code, IDiaFrameData will still be present for each function, all completely
identical.

The current behavior of the ContainedRangeMap can be approximated under
this scheme by using a constant for the replacement key during each
StoreRange call.  The only difference is that the return value no longer
indicates whether an entry was stored.

Original issue reported on code.google.com by [email protected] on 18 Oct 2006 at 1:17

minidump_dump test is timezone-dependent

What steps will reproduce the problem?
1. run "make check"

What is the expected output? What do you see instead?

I see:

--- ../src/processor/testdata/minidump1.out     2006-09-06
11:18:24.000000000 -0700
+++ -   2006-09-06 16:17:04.997440000 -0700
@@ -4,7 +4,7 @@
   stream_count         = 8
   stream_directory_rva = 0x20
   checksum             = 0x0
-  time_date_stamp      = 0x44172f15 2006-03-14 16:01:09
+  time_date_stamp      = 0x44172f15 2006-03-14 13:01:09
   flags                = 0x0
 mDirectory[0]
 MDRawDirectory

presumably because the expected result is local time in EDT, and I'm in PDT.

Original issue reported on code.google.com by [email protected] on 6 Sep 2006 at 11:20

check for non-existent dump file in CrashReportSender::SendCrashReport

Currently, passing a non-existent dump file to SendCrashReport will send a
request anyway, but it's malformed.  There's a check in GenerateRequestBody
for this, but the return value of GenerateRequestBody is ignored in
SendCrashReport.  The simple fix for this is to check the return value
there, and return false out of SendCrashReport if it fails.  This was
biting me because I was mangling my path on the way to the sender.  :-/

Original issue reported on code.google.com by ted.mielczarek on 3 Oct 2006 at 8:02

Check allocation and array sizes in minidump.cc

Most of the TODO(mmentovai) messages in minidump.cc are about checking
memory allocations.  The Minidump family of classes should provide some
(user-configurable) allocation limits, to avoid over-allocating in the
event of a huge or (worse) malicious minidump.

Original issue reported on code.google.com by [email protected] on 5 Sep 2006 at 8:41

StackFrame::function_base is not populated

We can't fill out the StackFrame::function_base field at the moment because
RangeMap::RetrieveRange doesn't tell its caller what the range's base
address is.  This means that code offsets within functions can't be computed.

The range map already stores the base address with each range and can
return it easily.  The size is an arithmatic operation away, and that can
be returned too.  This is only needed for RangeMap, but since that shares
an API with ContainedRangeMap, and it's just as easy to fix
ContainedRangeMap, it should probably be updated as well.

Original issue reported on code.google.com by [email protected] on 18 Oct 2006 at 1:06

Relicense to BSD

Moving license from Apache 2 to BSD, to allow for inclusion in products
that require GPL-compatibility (sigh).  Google is the sole rights holder of
the code being relicensed.

Original issue reported on code.google.com by [email protected] on 20 Sep 2006 at 4:35

Foo

It does not reproduce!

Original issue reported on code.google.com by [email protected] on 22 Aug 2006 at 11:48

Add ppc support to minidump reader

We've got the types we need to support ppc minidumps now.  Even before the
OS X-specific stuff is ready (we may need to add or change a few
OS-specific structures), we can get the processor-side minidump reader
prepared to read ppc state.

Original issue reported on code.google.com by [email protected] on 20 Sep 2006 at 1:19

support building the client with the static crt

Currently the Windows client only builds against the dynamic CRT, we should
provide build configurations which use the static CRT as well.

This patch does that, and also gets rid of the README file, which I decided
was pretty redundant with the documentation in the headers (and less likely
to be kept current).

Original issue reported on code.google.com by [email protected] on 28 Sep 2006 at 5:33

Attachments:

Import minidump reader

I've gotten the minidump reader ready for import.  It's tremendous.

- The patch contains only the change to Makefile.am; run automake before
  testing or checking in.
- I couldn't figure out how to get script-based unit tests to run within
  this framework.  "make check" runs "make MinidumpDump_unittest" which
  does nothing because the script already exists, but doesn't include
  MinidumpDump_unittest in the list of tests to run.  If you add it to
  $(TESTS), automake sets up rules to build it from .c source which of
  course does not exist.  So the test is here, but it's never run.
- This isn't done, but it works and the interfaces are roughly where I'd
  like them to be, so it's suitable to get into the tree.

bryner, when you get a chance, could you give me whatever type of review is
appropriate for a huge import?

Original issue reported on code.google.com by [email protected] on 29 Aug 2006 at 5:04

Enter one-line summary

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?


Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 13 Sep 2006 at 1:49

Better testing for Stackwalk

I was thinking about different ways to test Stackwalk.  One idea I had was
to walk the test process' own stack.  I threw this together, which makes a
bunch of recursive calls to verify that Stackwalker returns the right
number of frames on x86.

Original issue reported on code.google.com by [email protected] on 7 Sep 2006 at 8:58

Attachments:

Make SourceLineResolver use RangeMap

SourceLineResolver presently uses its own memory map (MemAddrMap), but #6
introduced a more generic RangeMap.  We can migrate SourceLineResolver to
the new class.

One caveat: currently, MemAddrMap and the file format used by
SourceLineResolver and the Windows dump_syms tool don't take the size/high
address of a range into account, where RangeMap does.

Original issue reported on code.google.com by [email protected] on 6 Sep 2006 at 2:41

add set_dump_path method to ExceptionHandler

While integrating airbag into Mozilla, we're setting the exception handler
as early as possible in the startup process, before XPCOM is started, so
we're just using a temp location for the dump path.  We'd like to change it
to the user's profile later once we have that location.  A SetDumpPath()
method on ExceptionHandler would serve nicely.

Original issue reported on code.google.com by ted.mielczarek on 29 Sep 2006 at 5:39

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.