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

Side by Side Diff: crash_sender

Issue 4139011: crash-reporter: fix bug where we were sending "undefined" as all stack signatures (Closed) Base URL: http://git.chromium.org/git/crash-reporter.git@master
Patch Set: Created 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh 1 #!/bin/sh
2 2
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 set -e 7 set -e
8 8
9 # Product ID in crash report 9 # Product ID in crash report
10 CHROMEOS_PRODUCT=ChromeOS 10 CHROMEOS_PRODUCT=ChromeOS
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 154
155 get_extension() { 155 get_extension() {
156 echo "${1##*.}" 156 echo "${1##*.}"
157 } 157 }
158 158
159 # Return which kind of report the given metadata file relates to 159 # Return which kind of report the given metadata file relates to
160 get_kind() { 160 get_kind() {
161 local payload="$(get_key_value "$1" "payload")" 161 local payload="$(get_key_value "$1" "payload")"
162 if [ ! -r "${payload}" ]; then 162 if [ ! -r "${payload}" ]; then
163 lecho "Missing payload: ${payload}" 163 lecho "Missing payload: ${payload}"
164 echo "unknown" 164 echo "undefined"
165 return 165 return
166 fi 166 fi
167 local kind="$(get_extension "${payload}")" 167 local kind="$(get_extension "${payload}")"
168 if [ "${kind}" = "dmp" ]; then 168 if [ "${kind}" = "dmp" ]; then
169 echo "minidump" 169 echo "minidump"
170 return 170 return
171 fi 171 fi
172 echo "${kind}" 172 echo "${kind}"
173 } 173 }
174 174
175 get_key_value() { 175 get_key_value() {
176 if ! grep -q "$2=" "$1"; then 176 if ! grep -q "$2=" "$1"; then
177 echo "undefined" 177 echo "undefined"
178 return 178 return
179 fi 179 fi
180 grep "$2=" "$1" | cut -d = -f 2- 180 grep "$2=" "$1" | cut -d = -f 2-
181 } 181 }
182 182
183 # Return the board name. 183 # Return the board name.
184 get_board() { 184 get_board() {
185 echo $(get_key_value "/etc/lsb-release" "CHROMEOS_RELEASE_BOARD") 185 echo $(get_key_value "/etc/lsb-release" "CHROMEOS_RELEASE_BOARD")
186 } 186 }
187 187
188 # Return the hardware class or "unknown". 188 # Return the hardware class or "undefined".
189 get_hardware_class() { 189 get_hardware_class() {
190 if [ -r "${HWCLASS_PATH}" ]; then 190 if [ -r "${HWCLASS_PATH}" ]; then
191 cat "${HWCLASS_PATH}" 191 cat "${HWCLASS_PATH}"
192 else 192 else
193 echo "unknown" 193 echo "undefined"
194 fi 194 fi
195 } 195 }
196 196
197 send_crash() { 197 send_crash() {
198 local meta_path="$1" 198 local meta_path="$1"
199 local report_payload="$(get_key_value "${meta_path}" "payload")" 199 local report_payload="$(get_key_value "${meta_path}" "payload")"
200 local kind="$(get_kind "${meta_path}")" 200 local kind="$(get_kind "${meta_path}")"
201 local exec_name="$(get_key_value "${meta_path}" "exec_name")" 201 local exec_name="$(get_key_value "${meta_path}" "exec_name")"
202 local sleep_time=$(generate_uniform_random $SECONDS_SEND_SPREAD) 202 local sleep_time=$(generate_uniform_random $SECONDS_SEND_SPREAD)
203 local url="${REPORT_UPLOAD_PROD_URL}" 203 local url="${REPORT_UPLOAD_PROD_URL}"
204 local chromeos_version="$(get_key_value "${meta_path}" "ver")" 204 local chromeos_version="$(get_key_value "${meta_path}" "ver")"
205 local board="$(get_board)" 205 local board="$(get_board)"
206 local hwclass="$(get_hardware_class)" 206 local hwclass="$(get_hardware_class)"
207 local write_payload_size="$(get_key_value "${meta_path}" "payload_size")" 207 local write_payload_size="$(get_key_value "${meta_path}" "payload_size")"
208 local sig="$(get_key_value "${meta_path}" "sig")" 208 local sig="$(get_key_value "${meta_path}" "sig")"
209 local send_payload_size="$(stat --printf=%s "${report_payload}" 2>/dev/null)" 209 local send_payload_size="$(stat --printf=%s "${report_payload}" 2>/dev/null)"
210
211 local extra_key1="write_payload_size"
212 local extra_value1="${write_payload_size}"
213 local extra_key2="send_payload_size"
214 local extra_value2="${send_payload_size}"
215 if [ "${sig}" != "undefined" ]; then
216 extra_key1="sig"
217 extra_value1="${sig}"
218 extra_key2="sig2"
219 extra_value2="${sig}"
220 fi
221
210 lecho "Sending crash:" 222 lecho "Sending crash:"
211 lecho " Scheduled to send in ${sleep_time}s" 223 lecho " Scheduled to send in ${sleep_time}s"
212 lecho " Metadata: ${meta_path} (${kind})" 224 lecho " Metadata: ${meta_path} (${kind})"
213 lecho " Payload: ${report_payload}" 225 lecho " Payload: ${report_payload}"
214 lecho " Version: ${chromeos_version}" 226 lecho " Version: ${chromeos_version}"
215 if is_mock; then 227 if is_mock; then
216 lecho " Product: ${CHROMEOS_PRODUCT}" 228 lecho " Product: ${CHROMEOS_PRODUCT}"
217 lecho " URL: ${url}" 229 lecho " URL: ${url}"
218 lecho " Board: ${board}" 230 lecho " Board: ${board}"
219 lecho " HWClass: ${hwclass}" 231 lecho " HWClass: ${hwclass}"
220 [ "${sig}" != "undefined" ] && lecho " Sig: ${sig}" 232 lecho " ${extra_key1}: ${extra_value1}"
233 lecho " ${extra_key2}: ${extra_value2}"
221 fi 234 fi
222 lecho " Exec name: ${exec_name}" 235 lecho " Exec name: ${exec_name}"
223 if is_mock; then 236 if is_mock; then
224 local mock_in=$(cat "${MOCK_CRASH_SENDING}") 237 local mock_in=$(cat "${MOCK_CRASH_SENDING}")
225 if [ "${mock_in}" = "" ]; then 238 if [ "${mock_in}" = "" ]; then
226 lecho "Mocking successful send" 239 lecho "Mocking successful send"
227 return 0 240 return 0
228 else 241 else
229 lecho "Mocking unsuccessful send" 242 lecho "Mocking unsuccessful send"
230 return 1 243 return 1
231 fi 244 fi
232 fi 245 fi
233 246
234 if ! sleep ${sleep_time}; then 247 if ! sleep ${sleep_time}; then
235 lecho "Sleep failed" 248 lecho "Sleep failed"
236 return 1 249 return 1
237 fi 250 fi
238 251
239 local report_id="${TMP_DIR}/report_id" 252 local report_id="${TMP_DIR}/report_id"
240 local curl_stderr="${TMP_DIR}/curl_stderr" 253 local curl_stderr="${TMP_DIR}/curl_stderr"
241 254
242 local extra_key1="write_payload_size"
243 local extra_value1="${write_payload_size}"
244 local extra_key2="send_payload_size"
245 local extra_value2="${send_payload_size}"
246 if [ "${sig}" != "unknown" ]; then
247 extra_key1="sig"
248 extra_value1="${sig}"
249 extra_key2="sig2"
250 extra_value2="${sig}"
251 fi
252
253 set +e 255 set +e
254 curl "${url}" \ 256 curl "${url}" \
255 -F "prod=${CHROMEOS_PRODUCT}" \ 257 -F "prod=${CHROMEOS_PRODUCT}" \
256 -F "ver=${chromeos_version}" \ 258 -F "ver=${chromeos_version}" \
257 -F "upload_file_${kind}=@${report_payload}" \ 259 -F "upload_file_${kind}=@${report_payload}" \
258 -F "board=${board}" \ 260 -F "board=${board}" \
259 -F "hwclass=${hwclass}" \ 261 -F "hwclass=${hwclass}" \
260 -F "exec_name=${exec_name}" \ 262 -F "exec_name=${exec_name}" \
261 -F "${extra_key1}=${extra_value1}" \ 263 -F "${extra_key1}=${extra_value1}" \
262 -F "${extra_key2}=${extra_value2}" \ 264 -F "${extra_key2}=${extra_value2}" \
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 TMP_DIR="$(mktemp -d /tmp/crash_sender.XXXX)" 392 TMP_DIR="$(mktemp -d /tmp/crash_sender.XXXX)"
391 393
392 # Send system-wide crashes 394 # Send system-wide crashes
393 send_crashes "/var/spool/crash" 395 send_crashes "/var/spool/crash"
394 396
395 # Send user-specific crashes 397 # Send user-specific crashes
396 send_crashes "/home/chronos/user/crash" 398 send_crashes "/home/chronos/user/crash"
397 } 399 }
398 400
399 main 401 main
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698