aboutsummaryrefslogtreecommitdiff
path: root/src/client/linux
Commit message (Collapse)AuthorAgeFilesLines
* Add custom getcontext() implementation for Android.digit@chromium.org2012-08-311-9/+3
| | | | | | | | | | | | | | | | | | | | | | | | | This adds a minimalistic implementation of getcontext() for Android/ARM and Android/x86. The provided code is in assembly and only implements the bare minimum required by Breakpad to get the current processor state. Note that: - The FPU state is not saved to the ucontext_t on ARM. (that's actually the main difference with a normal getcontext() implementation). This is normal. On Linux/ARM, such state must be obtained with PTRACE_GETVFPREGS instead. This will be implemented in a future patch. - On x86, only the 'regular' FPU state is saved, to mimic the GLibc/i386 implementation. The state of SSE/SSE2/etc registers is not part of the upstream getcontext() implementation. Review URL: https://breakpad.appspot.com/444002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1024 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix minidump_writer_unittest on Androiddigit@chromium.org2012-08-301-4/+3
| | | | | | | | Android doesn't have /bin/cp, so instead do the copy manually with CopyFile() Review URL: https://breakpad.appspot.com/442002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1022 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix Linux/ARM GetInstructionPointer() in minidump_writer.ccdigit@chromium.org2012-08-301-1/+1
| | | | | | | | On ARM, the 'ip' register (a.k.a. r12) is not the same than 'pc' (a.k.a. r15) which holds the real instruction pointer. Review URL: https://breakpad.appspot.com/443002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1021 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix the tools and processor build for Androiddigit@chromium.org2012-08-211-2/+2
| | | | | | | | | | | | | | | | | | This small patch allows the build of the tools and processor when targetting Android with the Automake/Autconf build. Not that these necessarily work correctly at the moment, but there is no need for --disable-tools --disable-processor now when using --host=arm-linux-androideabi or --host=i686-linux-android. + Modify android/run-checks.sh to build all binaries with the Automake build. + Tiny fix for --abi=x86 in android/run-checks.sh Review URL: https://breakpad.appspot.com/438002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1018 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Improve Android supportdigit@chromium.org2012-08-217-245/+1
| | | | | | | | | | | | | | | | | | This patch remove many Android-specific #ifdefs from the Breakpad source code. This is achieved by providing "fixed-up" platform headers (e.g. <signal.h> or <sys/user,h>), in the new directory src/common/android/include/, which masks differences between the NDK and GLibc headers. The old "android_link.h" and "android_ucontext.h" are moved and renamed. This also requires putting this directory as the first include path during Android-hosted builds, hence the modification of Makefile.am and configure.ac Review URL: https://breakpad.appspot.com/434002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1017 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix Android build.digit@chromium.org2012-08-202-2/+9
| | | | | | | | | | This patch fixes the Android build, and updates the NDK test application to use the new Linux ExceptionHandler API. + Use string insted of std::string in minidump_descriptor.h Review URL: https://breakpad.appspot.com/433002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1016 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make ExceptionHandler::HandleSignal() public.mark@chromium.org2012-08-102-0/+12
| | | | | | | | | Patch by Alexander Potapenko <glider@chromium.org> Review URL: https://codereview.appspot.com/6461052/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1008 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Adding a way to create an ExceptionHandler that takes in a file descriptorjcivelli@chromium.org2012-08-098-401/+611
| | | | | | | | | | | | where the minidump should be created, without the need of opening any other file. BUG=None TEST=Run unit-tests. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1007 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Conditionally compiling a unittest - based on whether AddressSanitizer is used. ivan.penkov@gmail.com2012-08-061-0/+7
| | | | | | | | http://breakpad.appspot.com/428002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1004 4c0a9323-5329-0410-9bdc-e9ce6186880e
* SORRY. It seems I've screwed up my commit for ↵digit@chromium.org2012-08-035-63/+67
| | | | | | | | | | http://breakpad.appspot.com/411002/, since revision 1001 only contains the new src/client/linux/linux_libc_support.cc and none of the other required files. I'm not sure what happened, but I'm re-uploading the patch has another issue. Review URL: https://breakpad.appspot.com/426002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1002 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Android ucontext_t handling refinement.digit@chromium.org2012-08-011-13/+116
| | | | | | | | | | | | | | This is a forward-compatible patch to prepare for future versions of the Android C library headers that define ucontext_t. When this patch is applied, Google Breakpad will build and work properly against any version of the NDK or platform headers. See http://code.google.com/p/android/issues/detail?id=34784 for more context. Review URL: https://breakpad.appspot.com/416002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1000 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Speculatively back out r989 per http://codereview.chromium.org/10805065/ :mark@chromium.org2012-07-246-193/+10
| | | | | | | | | | | | | | | | | | | | Ted Mielczarek: > You could try backing out r989, although Mozilla has been running with that > patch for months without issue. Me: > src/client/windows/handler/exception_handler.cc in r989 appears to have > formatting problems, an unwanted property change, and no real Breakpad review > history, so maybe we should back it out anyway until the proper process is > followed. NACL Tests nacl_integration failures: http://build.chromium.org/p/chromium/builders/NACL%20Tests/builds/30138 chrome src/native_client/tests/inbrowser_crash_test/crash_dump_tester.py says that the observed failures are a symptom of crash_service.exe itself crashing. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@998 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux: Fix a bunch of clang errors from not handling return values.thestig@chromium.org2012-07-244-12/+20
| | | | | | Review URL: https://breakpad.appspot.com/421002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@995 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Move minidump_extension_linux.h contents into minidump_format.hted.mielczarek2012-07-202-76/+0
| | | | | | R=mark at https://breakpad.appspot.com/415002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@991 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow adding extra memory regions to minidump on linux/windowsted.mielczarek2012-07-196-10/+193
| | | | | | A=Bill McCloskey <wmccloskey@mozilla.com> R=ted at https://bugzilla.mozilla.org/show_bug.cgi?id=662646 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@989 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add MD_OS_ANDROID definition.digit@chromium.org2012-07-041-0/+24
| | | | | | | | | | | In order to better distinguish Android and Linux minidumps, introduce a new MD_OS_ANDROID definition, and modify related source code accordingly. Also append the build-fingerprint to the minidump location descriptor. This gives more information about the system image the device runs on. Review URL: https://breakpad.appspot.com/405002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@981 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixing various compiler warnings and applying minor tweaks to allow running ofivan.penkov@gmail.com2012-07-026-45/+141
| | | | | | | | | | the mojority of breakpad unittests in Google. http://breakpad.appspot.com/399002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@978 4c0a9323-5329-0410-9bdc-e9ce6186880e
* This change allows compiling the google-breakpad code using a global ↵ivan.penkov@gmail.com2012-06-2810-39/+47
| | | | | | ::string class instead of std::string. For more details take a look at common/using_std_string.h git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@974 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix Android build of client librarydigit@chromium.org2012-06-272-32/+7
| | | | | | | | http://breakpad.appspot.com/401002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@973 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix race in VerifyStackReadWithMultipleThreadsted.mielczarek2012-04-252-20/+29
| | | | | | | Patch by Chris Dearman <chris@mips.com> R=ted at http://breakpad.appspot.com/377002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@959 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix compilation warnings related to unchecked return valuested.mielczarek2012-04-253-28/+43
| | | | | | | Patch by Chris Dearman <chris@mips.com> R=benchan at http://breakpad.appspot.com/377001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@957 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Reap child in VerifyStackReadWithMultipleThreadsted.mielczarek2012-04-251-0/+7
| | | | | | | Patch by Chris Dearman <chris@mips.com> R=benchan at http://breakpad.appspot.com/378001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@956 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix file descriptor leak in GetThreadInfoByIndexbenchan@chromium.org2012-04-181-0/+1
| | | | | | | Patch by Chris Dearman <chris@mips.com> Review URL: http://breakpad.appspot.com/376001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@954 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix file descriptor leaks in ExternalDumper testted.mielczarek2012-04-111-0/+2
| | | | | | | Patch by Chris Dearman <chris@mips.com> R=ted at http://breakpad.appspot.com/372002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@951 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Changes to get the breakpad client compiling and running on Android usingmark@chromium.org2012-04-036-28/+132
| | | | | | | | | | | ndk-7b. Patch by Carlos Valdivia <carlosvaldivia@google.com> Review URL: https://breakpad.appspot.com/363001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@945 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove redundant include of CPP specific header filested.mielczarek@gmail.com2012-04-031-2/+0
| | | | | | | Patch by Chris Dearman <chris@mips.com> R=ted at http://breakpad.appspot.com/372001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@944 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix several issues in linux_dumper_unittest_helperted.mielczarek@gmail.com2012-04-031-3/+6
| | | | | | | Patch by Chris Dearman <chris@mips.com> R=ted at http://breakpad.appspot.com/369001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@943 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix for putting main module as first one in minidumpmkrebs@chromium.org2012-03-302-3/+53
| | | | | | | | | | | | | | The first module in a minidump is expected to be for the main executable. We used to assume that /proc/<pid>/maps always showed that one first, but in some cases that is no longer true (see comment #7 of the bug). So this change makes use of the entry point stored in auxv to make sure we put the correct module first. BUG=chromium-os:25355 TEST=Ran Breakpad tests Review URL: https://breakpad.appspot.com/366002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@942 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Modify CrashGenerator::CreateChildCrash to copy proc files.benchan@chromium.org2012-02-231-13/+5
| | | | | | | | | | | | | | | | | | | | | This patch is taken from the downstream version of breakpad in Chromium OS: https://gerrit.chromium.org/gerrit/15148 LinuxCoreDumperTest previously assumes the proc files of the child process created by CrashGenerator::CreateChildCrash() have the same content as its parent process, which may not be true. This CL modifies CrashGenerator to copy the proc files of the child process, created by CreateChildCrash(), before crashing that process. BUG=chromium-os:25252 TEST=Verified the following: TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. Review URL: https://breakpad.appspot.com/353001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@925 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Avoid setting an alternative stack for signals if there is already oneted.mielczarek2012-02-142-8/+11
| | | | | | | P=Mike Hommey <mh@glandium.org> R=ted at http://codereview.appspot.com/5573054/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@918 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix test addresses to use uintptr_t instead of u_int64_t.benchan@chromium.org2012-01-273-4/+4
| | | | | | | | | | | | | | | | When a variable is used to set (and lookup) MappingInfo's "start_addr" field, it needs to match types -- which is "uintptr_t". When Chrome OS updated the 'make' that's used for building, the 32-bit "char *" had sign-extended when cast up to a u_int64_t -- maybe because pointers were unsigned before and then changed to be signed -- and that caused the address lookup to fail. BUG=chromium-os:25355 TEST=Ran Breakpad unittests A=mkrebs@chromium.org Review URL: http://breakpad.appspot.com/345001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@908 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use sys_prctl instead of prctl.thestig@chromium.org2012-01-241-8/+5
| | | | | | | http://breakpad.appspot.com/339002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@906 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Implement core dump to minidump conversion.benchan@chromium.org2012-01-1910-356/+1005
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Turn the LinuxDumper class into a base class and move ptrace related code into a new derived class, LinuxPtraceDumper. 2. Add a LinuxCoreDumper class, which is derived from LinuxDumper, to extract information from a crashed process via a core dump file instead of ptrace. 3. Add a WriteMinidumpFromCore function to src/client/linux/minidump_writer/minidump_writer.h, which uses LinuxCoreDumper to extract information from a core dump file. 4. Add a core2md utility, which simply wraps WriteMinidumpFromCore, for converting a core dump to a minidump. BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. 4. Run Chromium OS tests to test core2md. Review URL: http://breakpad.appspot.com/343001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@905 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Refactor LinuxDumper and MinidumpWriter.benchan@chromium.org2012-01-114-88/+128
| | | | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Add two convenient methods, back() and empty(), to the wasteful_vector class. 2. Refactor the LinuxDumper class such that it can later be splitted into a base class and two derived classes, one uses the current ptrace implementation and one uses a core file. 3. Refactor the MinidumpWriter class such that it can later use different derived implementations of LinuxDumper. BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. Review URL: http://breakpad.appspot.com/340001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@902 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Send crash dumps to Google via HTTPS instead of HTTP, since they mightthestig@chromium.org2012-01-041-1/+1
| | | | | | | | | | | | | contain sensitive information. BUG=none TEST=crash dumps still arrive A=palmer@chromium.org Original code review: http://breakpad.appspot.com/338001 Review URL: http://breakpad.appspot.com/334002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@899 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Replace readlink calls with a safer version that guarantees NULL-termination.benchan@chromium.org2011-12-214-14/+12
| | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Add a SafeReadLink function that wraps sys_readlink() to resolve a symbolic link but guarantees the result is NULL-terminated on success. 2. Refactor other source code to use SafeReadLink instead of readlink() or sys_readlink(). BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. 4. Run minidump-2-core to covnert a minidump file to a core file. Review URL: http://breakpad.appspot.com/334001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@896 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Refactor code in preparation of merging with the fork in Chromium OS.benchan@chromium.org2011-12-161-16/+5
| | | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Add a MemoryRange class for encapsulating and checking read access to a contiguous range of memory. 2. Add a MemoryMappedFile class for mapping a file into memory for read-only access. 3. Refactor other source code to use MemoryMappedFile. BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. 4. Run minidump-2-core to covnert a minidump file to a core file. Review URL: http://breakpad.appspot.com/332001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@895 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Correct compilation warning.qsr@chromium.org2011-11-232-67/+61
| | | | | | | | | 1) Modify src/common/mac/macho_walker.cc to remove a signed vs unsigned comparison. 2) Replace mktemp in test using AutoTmpDir that has been moved from client/mac/tests to common/tests. Review URL: http://breakpad.appspot.com/328001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@888 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix problem with not NULL terminating mapping name.kmixter@chromium.org2011-11-091-1/+2
| | | | | | | BUG=453 Review URL: http://breakpad.appspot.com/323001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@881 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix some shadow variables, including one in file_id.cc that causes all files ↵thestig@chromium.org2011-10-201-2/+2
| | | | | | | | to generate the same hash. Add a test to make sure this doesn't happen again. Review URL: http://breakpad.appspot.com/316002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@875 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix an assertion encountered in UntypedMDRVA::Copy().mmentovai2011-07-011-0/+9
| | | | | | | | | | | | | Fix an assertion where a zero-length buffer was being passed to UntypedMDRVA::Copy(). This occurred when WriteFile() was given a file whose size was a multiple of the temporary buffer size. In this issue's case, the procfs file "environ" happened to be 2032 bytes, while the temporary buffer was 1016 bytes. Patch by Michael Krebs <mkrebs@chromium.org> git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@792 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add some headers necessary to build the Linux client code with the Android ↵ted.mielczarek@gmail.com2011-05-312-0/+3
| | | | | | | | NDK r5 P=Alon Zakai <azakai@mozilla.com>, R=ted git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@790 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix linux-gate handling in LinuxDumper so it gets a valid debug IDted.mielczarek2011-05-062-2/+92
| | | | | | A=ted R=nealsid at http://breakpad.appspot.com/284001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@788 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Another attempt at signed / unsigned int resolution for linux minidump writer.jessicag.feedback@gmail.com2011-03-304-11/+15
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@785 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Adding header files at the request of Chrome.jessicag.feedback@gmail.com2011-03-221-0/+2
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@784 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add trusted checkjessicag.feedback@gmail.com2011-03-221-2/+7
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@783 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Merge adjacent mappings with the same name into one module in LinuxDumper.ted.mielczarek2011-03-142-23/+117
| | | | | | A=Mike Hommey <mh+mozilla@glandium.org> R=ted at https://bugzilla.mozilla.org/show_bug.cgi?id=637316 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@781 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Updating to ints from unsigned ints so -1 will be an acceptable value.jessicag.feedback@gmail.com2011-03-033-5/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@777 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix clang warning / miscompile.mmentovai2011-01-241-2/+2
| | | | | | | | | Patch by Nico Weber <thakis@chromium.org> Review URL: http://breakpad.appspot.com/256001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@760 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix compile by adding needed includes.thestig@chromium.org2011-01-121-6/+11
| | | | | | Review URL: http://breakpad.appspot.com/253001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@753 4c0a9323-5329-0410-9bdc-e9ce6186880e