Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Side by Side Diff: handler/crashpad_handler.ad

Issue 1414533006: mac: Add a mode to crashpad_handler to run from launchd (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « client/crashpad_client_mac.cc ('k') | handler/mac/exception_handler_server.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 15 matching lines...) Expand all
26 *crashpad_handler* ['OPTION…'] 26 *crashpad_handler* ['OPTION…']
27 27
28 == Description 28 == Description
29 29
30 This program is Crashpad’s main exception-handling server. It is responsible for 30 This program is Crashpad’s main exception-handling server. It is responsible for
31 catching exceptions, writing crash reports, and uploading them to a crash report 31 catching exceptions, writing crash reports, and uploading them to a crash report
32 collection server. Uploads are disabled by default, and can only be enabled by a 32 collection server. Uploads are disabled by default, and can only be enabled by a
33 Crashpad client using the Crashpad client library, typically in response to a 33 Crashpad client using the Crashpad client library, typically in response to a
34 user requesting this behavior. 34 user requesting this behavior.
35 35
36 On OS X, this server is normally started by its initial client, and it performs 36 On OS X, this server may be started by its initial client, in which case it
37 a handshake with this client via a pipe established by the client that is 37 performs a handshake with this client via a pipe established by the client that
38 inherited by the server, referenced by the *--handshake-fd* argument. During the 38 is inherited by the server, referenced by the *--handshake-fd* argument. During
39 handshake, the server furnishes the client with a send right that the client may 39 the handshake, the server furnishes the client with a send right that the client
40 use as an exception port. The server retains the corresponding receive right, 40 may use as an exception port. The server retains the corresponding receive
41 which it monitors for exception messages. When the receive right loses all 41 right, which it monitors for exception messages. When the receive right loses
42 senders, the server exits after allowing any upload in progress to complete. 42 all senders, the server exits after allowing any upload in progress to complete.
43
44 Alternatively, on OS X, this server may be started from launchd(8), where it
45 receives the Mach service name in a *--mach-service* argument. It checks in with
46 the bootstrap server under this service name, and clients may look it up with
47 the bootstrap server under this service name. It monitors this service for
48 exception messages. Upon receipt of +SIGTERM+, the server exits after allowing
49 any upload in progress to complete. +SIGTERM+ is normally sent by launchd(8)
50 when it determines that the server should exit.
43 51
44 On Windows, clients register with this server by communicating with it via the 52 On Windows, clients register with this server by communicating with it via the
45 named pipe identified by the *--pipe-name* argument. During registration, a 53 named pipe identified by the *--pipe-name* argument. During registration, a
46 client provides the server with an OS event object that it will signal should it 54 client provides the server with an OS event object that it will signal should it
47 crash. The server obtains the client’s process handle and waits on the crash 55 crash. The server obtains the client’s process handle and waits on the crash
48 event object for a crash, as well as the client’s process handle for the client 56 event object for a crash, as well as the client’s process handle for the client
49 to exit cleanly without crashing. When the server loses all clients and 57 to exit cleanly without crashing. When the server loses all clients and
50 *--persistent* is not specified, it exits after allowing any upload in progress 58 *--persistent* is not specified, it exits after allowing any upload in progress
51 to complete. 59 to complete.
52 60
53 It is not normally appropriate to invoke this program directly. Usually, it will 61 It is not normally appropriate to invoke this program directly. Usually, it will
54 be invoked by a Crashpad client using the Crashpad client library. Arbitrary 62 be invoked by a Crashpad client using the Crashpad client library, or started by
55 programs may be run with a Crashpad handler by using 63 another system service. On OS X, arbitrary programs may be run with a Crashpad
56 man_link:run_with_crashpad[1] to establish the Crashpad client environment 64 handler by using man_link:run_with_crashpad[1] to establish the Crashpad client
57 before running a program. 65 environment before running a program.
58 66
59 == Options 67 == Options
60 *--annotation*='KEY=VALUE':: 68 *--annotation*='KEY=VALUE'::
61 Sets a process-level annotation mapping 'KEY' to 'VALUE' in each crash report 69 Sets a process-level annotation mapping 'KEY' to 'VALUE' in each crash report
62 that is written. This option may appear zero, one, or multiple times. 70 that is written. This option may appear zero, one, or multiple times.
63 + 71 +
64 Most annotations should be provided by the Crashpad client as module-level 72 Most annotations should be provided by the Crashpad client as module-level
65 annotations instead of process-level annotations. Module-level annotations are 73 annotations instead of process-level annotations. Module-level annotations are
66 more flexible in that they can be modified and cleared during the client 74 more flexible in that they can be modified and cleared during the client
67 program’s lifetime. Module-level annotations can be set via the Crashpad client 75 program’s lifetime. Module-level annotations can be set via the Crashpad client
68 library. Process-level annotations are useful for annotations that the 76 library. Process-level annotations are useful for annotations that the
69 collection server requires be present, that have fixed values, and for cases 77 collection server requires be present, that have fixed values, and for cases
70 where a program that does not use the Crashpad client library is being 78 where a program that does not use the Crashpad client library is being
71 monitored. 79 monitored.
72 + 80 +
73 Breakpad-type collection servers only require the +"prod"+ and +"ver"+ 81 Breakpad-type collection servers only require the +"prod"+ and +"ver"+
74 annotations, which should be set to the product name or identifier and product 82 annotations, which should be set to the product name or identifier and product
75 version, respectively. It is unusual to specify other annotations as 83 version, respectively. It is unusual to specify other annotations as
76 process-level annotations via this argument. 84 process-level annotations via this argument.
77 85
78 *--database*='PATH':: 86 *--database*='PATH'::
79 Use 'PATH' as the path to the Crashpad crash report database. This option is 87 Use 'PATH' as the path to the Crashpad crash report database. This option is
80 required. Crash reports are written to this database, and if uploads are 88 required. Crash reports are written to this database, and if uploads are
81 enabled, uploaded from this database to a crash report collection server. If the 89 enabled, uploaded from this database to a crash report collection server. If the
82 database does not exist, it will be created, provided that the parent directory 90 database does not exist, it will be created, provided that the parent directory
83 of 'PATH' exists. 91 of 'PATH' exists.
84 92
85 *--handshake-fd*='FD':: 93 *--handshake-fd*='FD'::
86 Perform the handshake with the initial client on the file descriptor at 'FD'. 94 Perform the handshake with the initial client on the file descriptor at 'FD'.
87 This option is required. This option is only valid on Mac OS X. 95 Either this option or *--mach-service*, but not both, is required. This option
96 is only valid on OS X.
97
98 *--mach-service*='SERVICE'::
99 Check in with the bootstrap server under the name 'SERVICE'. Either this option
100 or *--handshake-fd*, but not both, is required. This option is only valid on OS
101 X.
102 +
103 'SERVICE' may already be reserved with the bootstrap server in cases where this
104 tool is started by launchd(8) as a result of a message being sent to a service
105 declared in a job’s +MachServices+ dictionary (see launchd.plist(5)). The
106 service name may also be completely unknown to the system.
88 107
89 *--persistent*:: 108 *--persistent*::
90 Continue running after the last client exits. If this option is not specified, 109 Continue running after the last client exits. If this option is not specified,
91 this server will exit as soon as it has no clients, although on startup, it 110 this server will exit as soon as it has no clients, although on startup, it
92 always waits for at least one client to connect. This option is only valid on 111 always waits for at least one client to connect. This option is only valid on
93 Windows. 112 Windows.
94 113
95 *--pipe-name*='PIPE':: 114 *--pipe-name*='PIPE'::
96 Listen on the given pipe name for connections from clients. 'PIPE' must be of 115 Listen on the given pipe name for connections from clients. 'PIPE' must be of
97 the form +\\.\pipe\<somename>+. This option is required. This option is only 116 the form +\\.\pipe\<somename>+. This option is required. This option is only
(...skipping 28 matching lines...) Expand all
126 Failure, with a message printed to the standard error stream. 145 Failure, with a message printed to the standard error stream.
127 146
128 == See Also 147 == See Also
129 148
130 man_link:catch_exception_tool[1], 149 man_link:catch_exception_tool[1],
131 man_link:crashpad_database_util[1], 150 man_link:crashpad_database_util[1],
132 man_link:generate_dump[1], 151 man_link:generate_dump[1],
133 man_link:run_with_crashpad[1] 152 man_link:run_with_crashpad[1]
134 153
135 include::../doc/support/man_footer.ad[] 154 include::../doc/support/man_footer.ad[]
OLDNEW
« no previous file with comments | « client/crashpad_client_mac.cc ('k') | handler/mac/exception_handler_server.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698