Karol Lewandowski [Thu, 17 Jan 2019 15:19:16 +0000 (15:19 +0000)]
Merge "svace: fix closing potentially negative fd" into tizen
Mateusz Moscicki [Mon, 14 Jan 2019 12:41:50 +0000 (13:41 +0100)]
Add support for tpk packages
Change-Id: Ic625678478e3dc888bea786bb203ef021c579228
Karol Lewandowski [Thu, 17 Jan 2019 11:38:48 +0000 (12:38 +0100)]
svace: fix closing potentially negative fd
This commit fixes following issue reported by svace:
"Variable 'cinfo.prstatus_fd', which may receive negative value at
crash-manager.c:588 by calling function 'set_crash_info' at
crash-manager.c:1267, is used at crash-manager.c:1332 by calling
function 'close'."
Change-Id: Ie625bc8ac5eb16a84bb7b139b569c6189e1a5e25
Karol Lewandowski [Tue, 18 Dec 2018 11:25:56 +0000 (12:25 +0100)]
Release 5.5.5
This release brings one change - DLog format specifier fixes for 64-bit
architecures.
Change-Id: I443faa5a06afb9c272c953360e0f85cbf913f7db
Karol Lewandowski [Tue, 18 Dec 2018 11:15:40 +0000 (12:15 +0100)]
Fix DLog format specifier for 64-bit architecures
Change-Id: I3f29eb0dc3e5081843f0c982dab92cd45aad1364
Karol Lewandowski [Fri, 14 Dec 2018 15:08:46 +0000 (16:08 +0100)]
Release 5.5.4
This release brings following fixes:
- fix DLog format specifier (needed if DLog start enforcing valid
printf-formats)
- fix: Make disk-usage functions use off_t
- relability fix: crash-manager: Do not force system to wait for
crash-popup to complete
Change-Id: I733f09298c34c1c7824f57dfa156f23cf9196947
Karol Lewandowski [Fri, 7 Dec 2018 10:02:24 +0000 (11:02 +0100)]
crash-stack: Fix format specifier
Change-Id: Ifdc4a229275b866f5718f0779b1a9cba01d7b1ea
Karol Lewandowski [Fri, 7 Dec 2018 10:02:06 +0000 (11:02 +0100)]
Make disk-usage functions use off_t
The off_t is the same type that stat(2) uses and it's widest type
that can actually hold information real disk usage.
Change-Id: Id4b5d1160bdecafb065cf6792274c255619817fc
Karol Lewandowski [Thu, 22 Nov 2018 19:34:17 +0000 (20:34 +0100)]
crash-manager: Do not force system to wait for crash-popup to complete
Calling crash-popup is synchronous, meaning that call has to complete
for crash-manager to complete, releasing core pipe descriptor - which
allows another crash to be handled.
This commit releases the core pipe descriptor allowing another crash
to be handled before popup is shown.
Change-Id: Iea08efc6318960ee43bb5494eaff42636529ec17
Karol Lewandowski [Fri, 23 Nov 2018 16:04:11 +0000 (17:04 +0100)]
Release 5.5.3
This release brings full suite of system tests, verified on TM1, Odroid,
32-bit emulator.
Addtionaly, this commit sets fs.suid_dumpable=2 sysctl to ensure all
processes are subject to core dumping.
Change-Id: I0d7142a42ef580ce1cb11c9d246c267438fb299c
Karol Lewandowski [Fri, 23 Nov 2018 16:01:27 +0000 (16:01 +0000)]
Merge "Add system tests" into tizen
Karol Lewandowski [Thu, 22 Nov 2018 17:49:36 +0000 (18:49 +0100)]
Drop unused service files
This commit removes unused service files originally disabled in
commit
9ef91ff21 ("Fix bugs [..] - Do not install unused services:
tizen-debug-on/off").
Change-Id: Icb41586586106a427524f1c8eddfdedc23d53f93
Karol Lewandowski [Thu, 22 Nov 2018 17:44:03 +0000 (18:44 +0100)]
sysctl: Set fs.suid_dumpable=2 for release builds
This commit enables dumping all processes - including those considered
by kernel as "suid".
Process is considered "suid" not only when it does (among other)
setuid/setgid but also when Capabilities are defined in systemd
unit. With suid_dumpable=0 crash of such "suid" processes would
not trigger execution of crash-worker by the kernel.
Please see suid_dumpable description in proc(5) for full explanation
what kernel considers "suid".
Change-Id: I067355ba651507b35ef7c8d23245443184b670cf
Mateusz Moscicki [Mon, 5 Nov 2018 12:46:03 +0000 (13:46 +0100)]
Add system tests
Change-Id: I9db485028d328bcc43e3bc4626c24a7f1a844f53
Karol Lewandowski [Fri, 16 Nov 2018 15:34:31 +0000 (16:34 +0100)]
Release 5.5.2
This version brings one major change - from now on buxton2ctl is used
instead of vconftool to dump the internal database (buxton is the
backend used by vconf anyway). The reason for this change is
inefficency of vconftool utility, for details see commit 5991e4b
("dump_systemstate: Replace extremely inefficient vconftool with
buxton2ctl").
Minor improvements include:
- util: Add fsync_path to selectively flush file buffer to disk
- util: Fix and replace nullvec2str utility function with concatenate()
- Define _GNU_SOURCE once for whole codebase
- packaging: Drop unused variables from cmake invocation
- util: Unify function calling convention to specify destination first
- util: copy_bytes: Multiple changes
Change-Id: I260c34576783ee0dfa79c9b704939b943dfa0515
Karol Lewandowski [Thu, 20 Sep 2018 19:32:11 +0000 (21:32 +0200)]
dump_systemstate: Replace extremely inefficient vconftool with buxton2ctl
vconftool and buxton2ctl access the same data. vconftool is shell script
which under the hood uses buxton2ctl. However, it does so in very inefficient
manner - to get the keys it calls buxton2ctl once, but to get key values
it calls buxton2ctl for each key. This causes it to fork
On TM1 target with 548 keys in "db/" this means 548 fork & buxton2ctl execs.
buxton2ctl gets the data from server via socket connection, meaning that
it needs to connect & write request and wait for response.
All of this together sums up to absurd - `buxton2ctl dump system` takes ~50ms,
while `vconftool get db/ -r` takes more than 12seconds - which is roughly
250 times slower!
sh-3.2# time buxton2ctl dump system >/dev/null
real 0m0.050s
user 0m0.040s
sys 0m0.000s
sh-3.2# time vconftool get db/ -r >/dev/null
real 0m12.344s
user 0m0.560s
sys 0m1.190s
With this change applied, dump_systemstate invocation time drops from
13seconds to 1.5-2sec (without logs), and from 13 seconds to 3-4secs (with
logs, ie. -k -d -j options).
Change-Id: I0cb042d18e5322d8246bf03ee142117217c83b4c
Karol Lewandowski [Wed, 7 Nov 2018 11:58:19 +0000 (12:58 +0100)]
util: Add fsync_path to selectively flush file buffer to disk
Change-Id: I3cd9169dafff33cdfbaf1c21955c37d38a524fae
Karol Lewandowski [Tue, 6 Nov 2018 23:21:26 +0000 (00:21 +0100)]
util: Fix and replace nullvec2str utility function with concatenate()
Multiple issues were found and fixed in previously-unused nullvec2str
function, including major problem with possible stack corruption via
long parameters.
This commit completely rewrites the function to dynamically resize the
buffer while appending new parameters to avoid previous problems.
Additionally, name is changed to somewhat more developer friendly name.
Influenced-by: Mateusz Mościcki and Michał Bloch
Change-Id: Ia97e3851bb4b5779a14704098752e3644c487f0b
Karol Lewandowski [Wed, 3 Oct 2018 11:59:18 +0000 (13:59 +0200)]
Define _GNU_SOURCE once for whole codebase
There is no need to repeat this in every file.
Change-Id: Ia788840d819b8d72122296a5e5d64aa2a7c3cb40
Karol Lewandowski [Wed, 3 Oct 2018 11:40:13 +0000 (13:40 +0200)]
packaging: Drop unused variables from cmake invocation
Ideally, crash-worker codebase should not know about
any of TZ_ vars - as all needed paths should be specified
explicitly from the .spec.
Change-Id: Id80fe0ae5f93940ce49bbe11903723a00f0261f0
Karol Lewandowski [Wed, 7 Nov 2018 11:00:18 +0000 (12:00 +0100)]
util: Unify function calling convention to specify destination first
This commit adjusts signature of copy_file(), move_file() and
dump_file_write_fd() to specify destination first, source second.
This in line with rest of codebase.
Change-Id: I81285cda73d43ff2428ea5daf7ad27676e51ca8a
Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Karol Lewandowski [Wed, 3 Oct 2018 11:36:17 +0000 (13:36 +0200)]
util: copy_bytes: Multiple changes
- Use max possible buffer size for sendfile()
The fewer we call sendfile() the better (performance)
- Provide read()/write() fallback when sendfile will
not work (eg. copying data from pipe to pipe)
- Add third argument with number of copied bytes. This is
to avoid mixing error code (negative) with transferred size.
- Make API available for rest of codebase
Change-Id: If80feb578b01fb715008a20e7c000c5ede9b62a1
Karol Lewandowski [Mon, 5 Nov 2018 13:02:41 +0000 (14:02 +0100)]
Release 5.5.1
Version bump due to Tizen 5.0 M2 release & corresponding branching
repo to additional tizen_5.0 line.
This version contains one fix for /proc/<PID>/maps parsing (not present
in tizen_5.0).
Change-Id: Ibbfebbd05b54bd81a0c55dafa357720ddfeb71cb
Mateusz Moscicki [Mon, 5 Nov 2018 10:39:40 +0000 (11:39 +0100)]
crash-stack: Fix a /proc/<pid>/maps file parsing
Change-Id: If164f3bf5cfaf7eefc68d992d90ff4110b52ca04
Mateusz Moscicki [Wed, 31 Oct 2018 13:04:09 +0000 (14:04 +0100)]
Release 5.0.8
Changes:
- Handle spaces in the crashed app pathname and in the maps file
- Don't interrupt the dump_systemstate if any of subcommands return
an error
Change-Id: Ifc81df710c4441cbc63b42e719102e50f44b138b
Mateusz Moscicki [Wed, 17 Oct 2018 11:23:29 +0000 (13:23 +0200)]
dump_systemstate: Continue dumping after failure of a subcommand
Change-Id: I7c0481984fbb9c04b26f913fb25208b11f9d6869
Mateusz Moscicki [Mon, 15 Oct 2018 11:43:15 +0000 (13:43 +0200)]
Handle spaces in the crashed app pathname and in the maps file
Change-Id: I98ff537cab9c37b78dc3f3056a375fd10461b7ea
Mateusz Mo?cicki [Fri, 19 Oct 2018 15:14:08 +0000 (15:14 +0000)]
Merge "crash-manager: Do not make temporary copy of crashed process maps" into tizen
Łukasz Stelmach [Tue, 16 Oct 2018 11:33:07 +0000 (11:33 +0000)]
Merge "Do not copy source files, it breaks SCQV process" into tizen
Karol Lewandowski [Wed, 3 Oct 2018 11:14:20 +0000 (13:14 +0200)]
crash-manager: Do not make temporary copy of crashed process maps
It was needed when crash-worker used (now removed) ptrace
-based crash-stack, which woken up crashed process, causing
/proc/<PID>/ entries to disappear.
Change-Id: Iec344e6c3b9d7d12979173dea530684573a0761d
Karol Lewandowski [Wed, 3 Oct 2018 13:44:20 +0000 (15:44 +0200)]
Release 5.0.7
This release brings one addtional fix for indexing array with negative
index bug.
Change-Id: I9e49379a68f4839256d1df26e42b144b6ed6a708
Karol Lewandowski [Wed, 3 Oct 2018 13:43:16 +0000 (15:43 +0200)]
Fix: Another instance of indexing array with negative index
Issue reported by Coverity.
Change-Id: Ida7f3106d650f48d5fff7e976f1bbc0df0fdc308
Karol Lewandowski [Wed, 3 Oct 2018 09:35:46 +0000 (11:35 +0200)]
Release 5.0.6
This change brings one fix and set of assorted cleanups:
- Fix: Do not index buffer[] with negative index in case of read failure
- util: Remove unused file_exist()
- util: Allow functions to be called from c++
- util: Add nullvec2str
- util: Remove unused cat_file()
- util: Dead code removal
- crash-manager: Use same constant for minicoredumper, crash-stack and zip command timeouts
Change-Id: I46fbdea06ad36f06116751c5f14105350569cad5
Karol Lewandowski [Wed, 3 Oct 2018 09:29:30 +0000 (11:29 +0200)]
Fix: Do not index buffer[] with negative index in case of read failure
Issue reported by Coverity.
Change-Id: Ie9cd66d2801770a096bb1849d11c860533508174
Karol Lewandowski [Wed, 3 Oct 2018 09:27:57 +0000 (11:27 +0200)]
util: Remove unused file_exist()
Change-Id: I1e20fc6cd55c9685db304a9aa40b58af56df0c00
Karol Lewandowski [Tue, 25 Sep 2018 11:38:58 +0000 (13:38 +0200)]
util: Allow functions to be called from c++
Change-Id: If4dc6b6e494096713e76a1345ab3753a6914e1c2
Karol Lewandowski [Wed, 3 Oct 2018 09:15:31 +0000 (11:15 +0200)]
util: Add nullvec2str
This function will be used to convert char *arr[] arrays
(like argv[] and envp[]) arrays to simple strings.
Change-Id: I352f2cc35ee5f06f6a9e6bc81b45702ea11f711d
Karol Lewandowski [Tue, 25 Sep 2018 11:13:32 +0000 (13:13 +0200)]
util: Remove unused cat_file()
Change-Id: Ie56ce502a4a1d6ca27574bf7f05b0f097079eaa2
Łukasz Stelmach [Thu, 27 Sep 2018 08:01:35 +0000 (10:01 +0200)]
Do not copy source files, it breaks SCQV process
Change-Id: Id9a7c450e67a67c366a937ad4337833f34404a3a
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Karol Lewandowski [Thu, 20 Sep 2018 09:55:38 +0000 (11:55 +0200)]
util: Dead code removal
Change-Id: I42bd0466c365c84b0720291504e10d86cb9859fe
Karol Lewandowski [Fri, 14 Sep 2018 21:42:34 +0000 (23:42 +0200)]
crash-manager: Use same constant for minicoredumper, crash-stack and zip command timeouts
Change-Id: I50d41e850d32cf40ee403f93020db67700002d3c
Mateusz Moscicki [Fri, 14 Sep 2018 14:04:41 +0000 (16:04 +0200)]
Release 5.0.5
Changes from last version:
- Code improvements
- Fixed SVACE and Coverity warnings
- Run zip and crash-stack commands with timeout
Change-Id: I84784e44c9baef654159ab55cb70aeaeaa150b42
Mateusz Moscicki [Wed, 12 Sep 2018 10:36:37 +0000 (12:36 +0200)]
Fix Coverity warnings: #1020601 #1020599 #1020595 #1020587
Change-Id: I6cd513db97ad4f67f259f11e088be3e68c8dc319
Mateusz Moscicki [Mon, 10 Sep 2018 13:41:20 +0000 (15:41 +0200)]
Fix after security review
* File: src/shared/util.c
Function: write_fd
Write in function may return EINTR correctly. Function does not
support this case correctly. If the interrupt occurs program will not
dump all data to file. The interrupt may come from child process
(SIGCHILD).
* File: src/shared/util.c
Function: fprintf_fd
You may replace fprintf_fd with standard library function dprintf.
* File: src/shared/util.c
Functions: dump_file_write_fd, copy_file, cat_file
Functions don’t support EINTR correctly (write in function write_fd
may be interrupt). In this functions it is not clear who will generate
signal to interrupt write call, so this is not security risk now. You
may replace loop with standard library function sendfile.
* File: crash-manager.c
Function: launch_crash_popup
Memory leak: value conn was allocated but was not deallocated.
* File: crash-manager.c
Function: prepare_paths
Invalid strings are stored in crash_crash_path and crash_temp_path.
Both strings are truncated by 1 byte.
Change-Id: Ie174b5ee043321861912f1b9233f0f6a6afd027e
Mateusz Moscicki [Wed, 5 Sep 2018 08:42:58 +0000 (10:42 +0200)]
Use dynamic allocated memory instead of fixed-size arrays
Change-Id: I03e91bf530204de6f03f1db79e2aa9bdd2608f95
Mateusz Moscicki [Fri, 31 Aug 2018 13:40:54 +0000 (15:40 +0200)]
Add timeout to the zip command
Change-Id: I52db6f8ccd1a2103da030c10898ec33c4a9bcc57
Mateusz Moscicki [Fri, 31 Aug 2018 12:04:49 +0000 (14:04 +0200)]
Add timeout to run the crash-stack
In case the crash-stack hangs, the crash-manager will still be able to
create a raport.
Change-Id: I62b3022dc1aec6507821473619c73cf90337643f
Mateusz Moscicki [Fri, 31 Aug 2018 10:44:13 +0000 (12:44 +0200)]
Merge move_dump_dir() and move_info_file()
Change-Id: I246bf743eefb199577bd00d6b3fd0defa6948eff
Mateusz Moscicki [Fri, 31 Aug 2018 10:07:56 +0000 (12:07 +0200)]
Stop using crash_info struct as a global variable
Change-Id: I1dee72cb7abf29e7ff2bf5bdc4e0852bda1329b1
Mateusz Moscicki [Thu, 30 Aug 2018 11:38:39 +0000 (13:38 +0200)]
Use parsed command line arguments instead of raw string values
Change-Id: I28c9479c2d6cb5d754e7ff3ee37f8cab34235456
Karol Lewandowski [Wed, 29 Aug 2018 13:39:10 +0000 (13:39 +0000)]
Merge "Release 5.0.4" into tizen
Mateusz Moscicki [Wed, 29 Aug 2018 11:06:11 +0000 (13:06 +0200)]
Release 5.0.4
Changes from last version:
- crash-stack use the same function to read /proc/<pid>/exe symlink as
the crash-manager
- crash-manager: Simplify dump_core error reporting
Change-Id: Id5d65baedcfe73c88e7aadee2cc7aef62c91269c
Mateusz Mo?cicki [Wed, 29 Aug 2018 13:38:28 +0000 (13:38 +0000)]
Merge "crash-manager: Simplify dump_core error reporting" into tizen
Mateusz Moscicki [Tue, 28 Aug 2018 13:27:30 +0000 (15:27 +0200)]
Move the function to read /proc/<pid>/exe symlink to util.c
Change-Id: Ieb533fb66dd3d06eb5bbc827aa016a308cf892a3
Karol Lewandowski [Wed, 29 Aug 2018 08:36:21 +0000 (10:36 +0200)]
crash-manager: Simplify dump_core error reporting
Change-Id: If8ff95811e4e5f16cb3a7a2e48dfe34a0bd3b1cb
Mateusz Moscicki [Tue, 28 Aug 2018 12:22:37 +0000 (14:22 +0200)]
Release 5.0.3
This version contains fixes of SVACE warnings
Change-Id: Id51181c8bf839922b83d0d85d3596a414d005ee5
Mateusz Moscicki [Tue, 28 Aug 2018 10:35:24 +0000 (12:35 +0200)]
Fix SVACE warnings
Warnings:
352484, 352485, 352486, 352488, 352489, 352490, 352491, 352492, 352493,
352494, 352495, 352496, 352497, 352498, 352501, 352502, 352487, 358117,
358162
Change-Id: I205ddaee97836c3146b25bbb380e11464713cb25
Mateusz Moscicki [Thu, 23 Aug 2018 11:54:30 +0000 (13:54 +0200)]
Release 5.0.2
Changes from last version:
- For INFO report type D-Bus signal has a proper report path
- Update license (imported tbstack code is BSD-licensed)
- Move finding TID to crash-manager - fixes support on older kernels
Change-Id: Ie7e038d4740fcd442e5c599c9d22c91a24c2ce74
Mateusz Moscicki [Thu, 23 Aug 2018 11:51:11 +0000 (13:51 +0200)]
Update license information in spec file
Change-Id: Iee77a2f8580167eb6e7087465fd820f0fae575a1
Mateusz Moscicki [Thu, 23 Aug 2018 10:45:51 +0000 (12:45 +0200)]
Fix report path for INFO report type
Change-Id: I973c452cd08a4ac18d4ad7460b21ceb28d9d6364
Mateusz Moscicki [Tue, 14 Aug 2018 13:42:02 +0000 (15:42 +0200)]
Move finding TID to crash-manager
Additionally find_crash_tid() returns PID for single-threaded applications,
instead of -1.
Change-Id: Id6fcc652b95bddda954f25cd448f1e090918c231
Karol Lewandowski [Wed, 22 Aug 2018 05:43:14 +0000 (07:43 +0200)]
Release 5.0.1
Major version bump due to versioning scheme change. Major versions
will now follow major Tizen releases (eg. crash-worker 5 for Tizen 5).
New features:
- callstack resolver has been rewritten to not use ptrace
This was required to avoid races during resolve process (kernel
would wake up ptraced process).
Consequently, it's now possible to prepare crash report of VIP
process (whose failure causes system to be rebooted).
- New-style D-Bus signal ProcessCrashed is now emitted to notify
about the crash
- .info-only report type now can be selected via configuration
option ReportType
- Crash dump location can be changed by CrashReportPath config
option
- Saving core dump (for FULL/.zip reports) can be changed by
DumpCore option
Change-Id: I91e806d0d516e618802aee7a742120c0281034a1
Karol Lewandowski [Wed, 22 Aug 2018 10:30:45 +0000 (12:30 +0200)]
Normalize minicoredumper config variable naming
Change-Id: I5669d0d46fc15c8193b5e8ea11d1254838a8dfd1
Karol Lewandowski [Wed, 22 Aug 2018 10:28:48 +0000 (12:28 +0200)]
Move crash-manager.conf to /etc
This commit brings back config to /etc to avoid problems
with config not being available for crashes happening
during bootup (when /opt/ is not mounted yet)
Change-Id: Ib384f1fd28192dd199565d888c59f0a33d4d578d
Karol Lewandowski [Wed, 22 Aug 2018 07:02:41 +0000 (09:02 +0200)]
Fail early if can not run minicoredumper properly
Minicoredumper is essential for gathering report, so
it does not make much sense to continue when we can't
even pass right parameters (prstatus).
Change-Id: Id7560452110871190f243f7ff61f4e849351a8af
Karol Lewandowski [Wed, 22 Aug 2018 06:50:42 +0000 (08:50 +0200)]
Remove unsupported and misleading configuration options
- Remove TIZEN_FEATURE_PTRACE_CALLSTACK option
Crash report generation method has been reworked
and does not depend on ptrace anymore.
- Remove TIZEN_ENABLE_MINICOREDUMPER option
Minicoredumper is required to dump PRSTATUS, which
is later used by crash-manager (for D-Bus signal)
and by crash-stack (for callstack unwinding)
- Remove TIZEN_ENABLE_COREDUMP option
crash-pipe does not dump PRSTATUS so can not be
used as an option (see above).
Consequently, enabling/disabling coredumps has been
moved to configuration file (DumpCore=0/1).
Change-Id: If535acfe7e64fdde0a8b50afd8b3a1f44fda2490
Karol Lewandowski [Wed, 22 Aug 2018 10:53:19 +0000 (10:53 +0000)]
Merge changes I5ecf4873,I049952ab into tizen
* changes:
log_dump: dbus: Only root can own org.tizen.system.crash name
log_dump: Rework service file
Mateusz Moscicki [Fri, 20 Jul 2018 09:00:49 +0000 (11:00 +0200)]
Add report types
Depending on report type we save all zip archive with coredump, logs,
so_info and info file, or just only the *.info file. Report type can be set in
crash-manager.conf:
[CrashManager]
...
ReportType=INFO
...
Available report types:
* INFO - Save *.info file
* FULL - Save coredump, *.log, *.so_info and *info file as a ZIP archive (default)
Change-Id: I486049ac8eb928ebdc6ac513bdeac3c98aa4adcc
Mateusz Moscicki [Fri, 20 Jul 2018 10:58:22 +0000 (12:58 +0200)]
Split execute_crash_modules
Change-Id: Iae6af748786c68dcb45a50dc37275fe12e40d85d
Mateusz Moscicki [Thu, 19 Jul 2018 07:42:54 +0000 (09:42 +0200)]
Add ability to set report path in crash-manager.conf
To change default report path (/opt/usr/crash/dump/) modify the value in
crash-manager.conf:
[CrashManager]
...
CrashRootPath=/var/crash
...
Change-Id: I39b9bc178e989a1aad5727f5becdee74b1e1b13b
Mateusz Moscicki [Thu, 2 Aug 2018 09:16:56 +0000 (11:16 +0200)]
Add DBus signal emitting after report save
Interface: "org.tizen.system.crash.Crash"
Path: "/org/Tizen/System/Crash/Crash"
Signal: "ProcessCrashed"
Message (signature "sssssiia{sv}"), contains:
* process name
* exe path
* appid
* pkgid
* report path
* PID
* TID
* dictionary a{sv} contains registers values depends on the architecture:
* for x86:
* x86.eip
* for x86_64:
* x86_64.rip
* for armv7l:
* arm.pc
* arm.lr
* for aarch64:
* aarch64.pc
* aarch64.lr
Change-Id: I081a3f4982e2f0d4b01fd665b4dffcd3bab847f4
Mateusz Moscicki [Fri, 10 Aug 2018 08:41:39 +0000 (10:41 +0200)]
Save full cmd_line
Change-Id: I98ac10c8931a0e1c0b586c6e116279faa6ef9d44
Łukasz Stelmach [Mon, 6 Aug 2018 12:09:34 +0000 (14:09 +0200)]
log: Enable logging messages to a FILE* instead of dlog
For development purposes it is possible to write log messages to a FILE*
instead of dlog. To do it add the line below before including log.h.
#define LOG_FILE stderr
You may to choose any other FILE* than stderr but you need to make sure
it is available.
Change-Id: I500fd774b95d84b78c8bc46d4274ac1f94947f9c
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Łukasz Stelmach [Tue, 7 Aug 2018 13:51:52 +0000 (15:51 +0200)]
crash-stack: Use dlog-based macros for logging messages
Change-Id: I16bbfd1f6437b106e187633ddd00e65bbe74738f
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Łukasz Stelmach [Tue, 7 Aug 2018 13:54:30 +0000 (15:54 +0200)]
Integrate code from tbstack
Change-Id: I4f9b523b277fb464e60deaccba316ed94c750df9
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Łukasz Stelmach [Tue, 7 Aug 2018 11:46:13 +0000 (13:46 +0200)]
Support x86
Change-Id: I6cb87b61072be11341e6956357b05af63a620646
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Mateusz Moscicki [Tue, 7 Aug 2018 10:00:17 +0000 (12:00 +0200)]
Support Aarch64
Change-Id: Iad3979f7e5c73da9a35619c5a8a89f8a5257a780
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Łukasz Stelmach [Mon, 30 Jul 2018 12:12:42 +0000 (14:12 +0200)]
Support arm
Change-Id: I406030ffac77791b4cceb633d00c6adc60b72357
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Łukasz Stelmach [Fri, 27 Jul 2018 11:46:56 +0000 (13:46 +0200)]
crash-stack: import tbstack sources
Import files from tbstack project (commit
06b996baf444450dea117296f3b04fe5ba753222)
The code allows access to a crashed process via process_vm_readv()
(or reading /porc/PID/mem) instead of ptrace(2), which is not permited
for crashed processes.
Change-Id: I202454d03bdf5da6c419c921db839a0647c0ec2c
Origin: https://github.com/tbricks/tbstack/commit/
06b996baf444450dea117296f3b04fe5ba753222
Origin: https://github.com/tbricks/tbstack/pull/31/commits/
d0c7acfaa269e9183c41d120073aadca68b6f79d
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
[ Changed Origin & Commit after code has been merged to upstream repository
Commit:
d0c7acfaa269e9183c41d120073aadca68b6f79d ->
06b996baf444450dea117296f3b04fe5ba753222
Origin: ihttps://github.com/tbricks/tbstack/pull/31/commits/
d0c7acfaa269e9183c41d120073aadca68b6f79d -> https://github.com/tbricks/tbstack/commit/
06b996baf444450dea117296f3b04fe5ba753222 ]
Signed-off-by: Karol Lewandowski <k.lewandowsk@samsung.com>
Karol Lewandowski [Thu, 9 Aug 2018 07:05:56 +0000 (09:05 +0200)]
log_dump: dbus: Only root can own org.tizen.system.crash name
Change-Id: I5ecf48736cd0f0e4786075b766fc697d1a1e399a
Karol Lewandowski [Thu, 9 Aug 2018 06:58:38 +0000 (08:58 +0200)]
log_dump: Rework service file
This commit adjusts log_dump systemd service to
provide normal dbus-type unit.
Additionally, unused and erroneous "ENGINEER_MODE"
is removed.
Change-Id: I049952ab19d1e6a0b8ee8319cedb83226037814f
Karol Lewandowski [Tue, 31 Jul 2018 11:07:20 +0000 (13:07 +0200)]
Release 1.2.1
Bugfix release, includes:
* Fix off-by-one error in generating the so_info file
Change-Id: I4630757714e45db085980f2e002613df5375d9af
Mateusz Moscicki [Wed, 25 Jul 2018 07:18:00 +0000 (09:18 +0200)]
Fix off-by-one error in generating the so_info file
Change-Id: I65dba1b2be1237578df5679586f1449d4fa94023
Karol Lewandowski [Fri, 20 Jul 2018 10:01:28 +0000 (12:01 +0200)]
Release 1.2
This release brings following features:
* rewritten rpm interface - from using rpm command to direct librpm
usage - this offers considerable speed improvement
* waiting for /opt (or generally CRASH_ROOT_PATH) to appear -
useful for crashes occuring early during bootup
Minor fixes/debugging enchancements are provided.
Change-Id: Idb193bebc56c5f8d86fa360de1787cadb6a75583
Mateusz Moscicki [Tue, 17 Jul 2018 11:57:41 +0000 (13:57 +0200)]
Log message to dlog when wait_for_child returns non-zero value
Change-Id: Ib2b3df0939a13a553b05cc747e5b17a4e5fe580d
Mateusz Moscicki [Tue, 17 Jul 2018 11:43:39 +0000 (13:43 +0200)]
Add own implementation of getting rpm packages info
Calling the external rpm command is too slow, especially for binaries
with many shared object dependencies.
Change-Id: I48a86c0a0067bb2d37b7b7a12abae5d611c8b572
Mateusz Moscicki [Tue, 17 Jul 2018 08:30:31 +0000 (10:30 +0200)]
Copy /proc/<pid>/maps file to temporary directory
To save as much time as possible, we can parse maps file when coredump
is already saved and process is probably cleaned up.
Change-Id: I136d1c462fe2fe9c204deea09b1d0269cee32530
Mateusz Moscicki [Thu, 14 Jun 2018 11:18:22 +0000 (13:18 +0200)]
Add checking if CRASH_ROOT_PATH exists
When system booting, /opt may not be mounted yet. In this case if any
program will crash, the crash-manager will wait about 60 seconds for
/opt. After this time the the crash report will be lost.
Change-Id: I97e9541262d1a0f9844aa260ac23972f70e27638
Mateusz Moscicki [Mon, 2 Jul 2018 07:02:31 +0000 (09:02 +0200)]
Return exit code of the program invoked by run_command_write_fd_timeout()
Change-Id: Ib7f046aed8ca352463d6ba7559f947e487ad85b8
Mateusz Moscicki [Fri, 29 Jun 2018 11:31:38 +0000 (13:31 +0200)]
Fix reading /proc/<pid>/maps file
Macro is expanded by preprocessor, but sizeof() is evaluated at compile time.
Change-Id: I4ca20ff703cf89fba2137ec3eb24550d1013fdff
Karol Lewandowski [Mon, 18 Jun 2018 14:44:01 +0000 (16:44 +0200)]
packaging: Fix minicoredumper path
Change-Id: I5a57f9a3c0272ebed534aee7edd88d2c2f362b89
Karol Lewandowski [Mon, 18 Jun 2018 13:06:06 +0000 (15:06 +0200)]
Release crash-worker with minicoredumper
Change-Id: Ie72ab3379f50174e1c76c79da5af56cb8aaed5ad
Mateusz Moscicki [Thu, 22 Feb 2018 09:45:37 +0000 (10:45 +0100)]
crash-manager: add minicoredumper
minicoredumper strips unnecessary data from coredump
and makes use of sparse file mechanism, to quickly save
core files on disc.
Change-Id: Ic8e968b5e7a011f9a06794876c372063e968a354
Mateusz Moscicki [Tue, 20 Mar 2018 07:43:10 +0000 (08:43 +0100)]
Add *.so_info file to the report
*.so_info file contains paths, rpm package info (name, version, release,
architecture) and build IDs of mapped files that have a execute flag in
/proc/<pid>/maps.
Change-Id: I087a8d25efeb1f51a5e25d95cce5c60a8f2a607b
Karol Lewandowski [Fri, 15 Jun 2018 13:51:28 +0000 (13:51 +0000)]
Merge "Add timeout to run_command_write_fd and replace popen by execvpe" into tizen
Mateusz Moscicki [Thu, 14 Jun 2018 10:37:56 +0000 (12:37 +0200)]
Fix stack-buffer-overflow error
Lenghts in sscanf format string refer to actually read bytes, without
including space for null byte, E.g.:
...
char buff[5+1];
sscanf(other_buff, "%5s", buff);
...
Change-Id: I203e1bc04ba1e352029849e5bd29a7a6ca8a5763
Sunmin Lee [Mon, 18 Sep 2017 04:27:50 +0000 (13:27 +0900)]
Fix vulnerabilities
Change-Id: Ia7d8565ef86cfef9d8b61e2e11020b6f1b49ed1d
Signed-off-by: Sunmin Lee <sunm.lee@samsung.com>
Mateusz Moscicki [Wed, 16 May 2018 06:23:00 +0000 (08:23 +0200)]
Add timeout to run_command_write_fd and replace popen by execvpe
dump_systemstate runs many external commands. When one hungs,
dump_systemstate will block the crash-worker.
execvpe replaced popen because popen passes command to /bin/sh, and this
can potentially allow to run the malicious command if attacker can
modify the fragment of cmd, e.g:
void read_file(char *filename)
{
...
sprintf(buff, "cat %s", filename);
popen(buff, "r");
...
}
main()
{
char filename[] = "/etc/passwd;rm -rf /";
read_file(filename);
}
Change-Id: Id7b37c058869c27d3c4d282d9d2dd30d5b9ec80c
Mateusz Moscicki [Wed, 30 May 2018 11:33:20 +0000 (13:33 +0200)]
crash-pipe: Fix write the coredump to the file
splice returns EINVAL if (loff_t)(len + out.pos) is negative number.
This was the case on aarch64 and x86_64.
Change-Id: Ic52d08efce3fca555a83319c8161c3656b553cc1
Mateusz Moscicki [Wed, 30 May 2018 11:31:21 +0000 (13:31 +0200)]
Revert "crash-pipe: Fix write the coredump to the file"
This reverts commit
70c1372b5a85a64d5ea7c5bb20b99429213942be.
Change-Id: I553b4c6ef2e5aa9cdc80e4d58ecd318dc0a2d532