Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test/coredumpctl: support freebsd #17447

Merged
merged 1 commit into from Sep 6, 2017

Conversation

tchaikov
Copy link
Contributor

@tchaikov tchaikov commented Sep 4, 2017

use sysctlbyname() to get/set the "kern.coredump" on platforms
supporting "sysctlbyname()".

Signed-off-by: Kefu Chai kchai@redhat.com

@wjwithagen
Copy link
Contributor

@tchaikov
Cool, where did you find this sysctl...
I tried looking thru man sysctl and nothing turned up.
Will testdrive it tonight.

@wjwithagen
Copy link
Contributor

@tchaikov
I guess it still needs some work, since this is the number of cores after one run:

1051 -rw-------  1 jenkins  jenkins   150409216 Sep  4 22:56 build/src/test/common/core.unittest_mutex.94617
1331 -rw-------  1 jenkins  jenkins   158916608 Sep  4 22:55 build/src/test/common/core.unittest_throttle.94499
1275 -rw-------  1 jenkins  jenkins   158826496 Sep  4 22:55 build/src/test/common/core.unittest_throttle.94505
1340 -rw-------  1 jenkins  jenkins   170467328 Sep  4 22:56 build/src/test/common/core.unittest_throttle.95124
3717 -rw-------  1 jenkins  jenkins  1656213504 Sep  4 22:56 build/src/test/core.ceph_test_objectsto.94668
3756 -rw-------  1 jenkins  jenkins  1656213504 Sep  4 22:56 build/src/test/core.ceph_test_objectsto.94721
 847 -rw-------  1 jenkins  jenkins   150917120 Sep  4 22:57 build/src/test/core.unittest_bufferlist.3741
 847 -rw-------  1 jenkins  jenkins   150917120 Sep  4 22:57 build/src/test/core.unittest_bufferlist.4185
 870 -rw-------  1 jenkins  jenkins   152313856 Sep  4 22:57 build/src/test/core.unittest_bufferlist.5971
 871 -rw-------  1 jenkins  jenkins   152453120 Sep  4 22:57 build/src/test/core.unittest_bufferlist.6125
7608 -rw-------  1 jenkins  jenkins  1285357568 Sep  4 22:57 build/src/test/core.unittest_bufferlist.6606
7607 -rw-------  1 jenkins  jenkins  1285349376 Sep  4 22:57 build/src/test/core.unittest_bufferlist.6733
1055 -rw-------  1 jenkins  jenkins   150913024 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94251
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94260
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94267
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94270
1054 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94280
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94282
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94289
1052 -rw-------  1 jenkins  jenkins   150913024 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94295
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94298
1051 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94305
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94308
1052 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94310
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94313
1052 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94315
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94322
1051 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94325
1055 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94331
1052 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94333
1051 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94341
1052 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94355
1052 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94359
1052 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94366
1052 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94369
1051 -rw-------  1 jenkins  jenkins   150949888 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94373
1036 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94471
1037 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94472
1037 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94477
1037 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94486
1038 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94490
1038 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:55 build/src/test/core.unittest_bufferlist.94493
1204 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:56 build/src/test/core.unittest_bufferlist.97203
1205 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:56 build/src/test/core.unittest_bufferlist.97223
1204 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:56 build/src/test/core.unittest_bufferlist.97251
1205 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:56 build/src/test/core.unittest_bufferlist.97261
1204 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:56 build/src/test/core.unittest_bufferlist.97708
1204 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:56 build/src/test/core.unittest_bufferlist.97849
1204 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:56 build/src/test/core.unittest_bufferlist.97906
1205 -rw-------  1 jenkins  jenkins   150736896 Sep  4 22:56 build/src/test/core.unittest_bufferlist.97965
1007 -rw-------  1 jenkins  jenkins   150310912 Sep  4 22:55 build/src/test/core.unittest_ceph_compa.94179
1010 -rw-------  1 jenkins  jenkins   150310912 Sep  4 22:55 build/src/test/core.unittest_ceph_compa.94188
1221 -rw-------  1 jenkins  jenkins   155037696 Sep  4 22:55 build/src/test/core.unittest_log.94212
1241 -rw-------  1 jenkins  jenkins   156119040 Sep  4 22:55 build/src/test/core.unittest_signals.94259
1271 -rw-------  1 jenkins  jenkins   159117312 Sep  4 22:55 build/src/test/core.unittest_texttable.94323
1603 -rw-------  1 jenkins  jenkins   160608256 Sep  4 22:56 build/src/test/objectstore/core.unittest_chain_xatt.2905
1603 -rw-------  1 jenkins  jenkins   160608256 Sep  4 22:56 build/src/test/objectstore/core.unittest_chain_xatt.2977
1119 -rw-------  1 jenkins  jenkins   150806528 Sep  4 22:57 build/src/test/osd/core.unittest_osd_types.5848
1134 -rw-------  1 jenkins  jenkins   150880256 Sep  4 22:57 build/src/test/osd/core.unittest_osd_types.5928
1134 -rw-------  1 jenkins  jenkins   150880256 Sep  4 22:57 build/src/test/osd/core.unittest_osd_types.5993
1144 -rw-------  1 jenkins  jenkins   153255936 Sep  4 22:57 build/src/test/osd/core.unittest_osd_types.6014
1143 -rw-------  1 jenkins  jenkins   153255936 Sep  4 22:57 build/src/test/osd/core.unittest_osd_types.6041
1143 -rw-------  1 jenkins  jenkins   153255936 Sep  4 22:57 build/src/test/osd/core.unittest_osd_types.6107
1143 -rw-------  1 jenkins  jenkins   153255936 Sep  4 22:57 build/src/test/osd/core.unittest_osd_types.6182
3335 -rw-------  1 jenkins  jenkins   167845888 Sep  4 22:57 build/src/test/osd/core.unittest_pglog.6965

@wjwithagen
Copy link
Contributor

@tchaikov
Not sure if this also holds for sysctlbyname() but would expect it does....

wjw@cephdev:~/master % sudo -u jenkins sysctl -w kern.coredump=0
kern.coredump: 1
sysctl: kern.coredump=0: Operation not permitted

@wjwithagen
Copy link
Contributor

@tchaikov
I had this question in my mailarchive, because I already tried to work on it.

>  See procctl(2) PROC_TRACE_CTL command.  Disabling tracing also disables
>  coredumping.
     PROC_TRACE_CTL          Enable or disable tracing of the specified
                             process(es), according to the value of the
                             integer argument.  Tracing includes attachment to
                             the process using the ptrace(2) and ktrace(2),
                             debugging sysctls, hwpmc(4), dtrace(1), and core
                             dumping.  Possible values for the data argument
                             are:

                             PROC_TRACE_CTL_ENABLE           Enable tracing,
                                                             after it was
                                                             disabled by
                                                             PROC_TRACE_CTL_DISABLE.
                                                             Only allowed for
                                                             self.

                             PROC_TRACE_CTL_DISABLE          Disable tracing
                                                             for the specified
                                                             process.  Tracing
                                                             is re-enabled
                                                             when the process
                                                             changes the
                                                             executing program
                                                             with the
                                                             execve(2)
                                                             syscall.  A child
                                                             inherits the
                                                             trace settings
                                                             from the parent
                                                             on fork(2).

                             PROC_TRACE_CTL_DISABLE_EXEC     Same as
                                                             PROC_TRACE_CTL_DISABLE,
                                                             but the setting
                                                             persists for the
                                                             process even
                                                             after execve(2).


setrlimit() on platforms without prctl()

Signed-off-by: Kefu Chai <kchai@redhat.com>
@tchaikov
Copy link
Contributor Author

tchaikov commented Sep 5, 2017

I had this question in my mailarchive, because I already tried to work on it.

what was your question? and good to learn that you tried to work on it, but i am not sure if this is relevant ?

@wjwithagen
Copy link
Contributor

Sorry if that was not clear..... 8D
Question was: How to prevent programs from actually writting a coredump when running into a TRAP.
General suggestions are to use things like sysctl and/or ulimt. But that has either OS or user boundaries. Fixing it with procctl() should allow to do this on a per-process basis.
Which I think this PR is about?

@tchaikov
Copy link
Contributor Author

tchaikov commented Sep 5, 2017

okay. anyway, i updated this PR to use setrlimit. this is my last resort.

@wjwithagen
Copy link
Contributor

@tchaikov
Testing.

Copy link
Contributor

@wjwithagen wjwithagen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tchaikov
That one works:

% find build/src -type f -name \*core\* | xargs ls -asl
1677 -rw-rw-r--  1 jenkins  jenkins  6953800 Sep  5 11:51 build/src/rgw/CMakeFiles/rgw_a.dir/rgw_a.dir/rgw_object_expirer_core.cc.o

@tchaikov tchaikov merged commit 0717fc3 into ceph:master Sep 6, 2017
@tchaikov tchaikov deleted the wip-freebsd-coredump branch September 6, 2017 03:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
2 participants