Commit Graph
32740 Commits
Author SHA1 Message Date
Michal Nowak ffbfa9582f Merge branch 'mnowak/add-stress-test-to-CI' into 'main'
Add stress test to CI

See merge request isc-projects/bind9!3716
2020-10-26 17:02:37 +00:00
Michal Nowak 39305411e8 Add "stress" tests to GitLab CI
Run "stress" tests for scheduled pipelines and pipelines created for
tags.  These tests were previously only performed manually (as part of
pre-release testing of each new BIND version).  Their purpose is to
detect memory leaks and potential performance issues.

As the run time of each "stress" test itself is set to 1 hour, set the
GitLab CI job timeout to 2 hours in order to account for the extra time
needed to set the test up and gather its results.
2020-10-26 18:01:19 +01:00
Michal Nowak 58aca6d9d5 Merge branch 'mnowak/openbsd-fix-gdb-in-system-test' into 'main'
Fix system test backtrace generation on OpenBSD

See merge request isc-projects/bind9!4272
2020-10-26 13:59:07 +00:00
Michal Nowak f0b13873a3 Fix system test backtrace generation on OpenBSD
On Linux core dump contains absolute path to crashed binary

    Core was generated by `/home/newman/isc/ws/bind9/bin/named/.libs/lt-named -D glue-ns1 -X named.lock -m'.

However, on OpenBSD there's only a basename

    Core was generated by `named'.

This commit adds support for the latter, retains the former.
2020-10-26 14:58:15 +01:00
Mark Andrews f8de3df76c Merge branch '2226-tsan-error-in-dispatch-c' into 'main'
Resolve "TSAN error in dispatch.c accessing disp->portentry"

Closes #2226

See merge request isc-projects/bind9!4286
2020-10-23 20:08:43 +00:00
Mark Andrews 5c253c416d Hold qid->lock when calling deref_portentry() as
socket_search() need portentry to be unchanging.

    WARNING: ThreadSanitizer: data race
    Write of size 8 at 0x000000000001 by thread T1 (mutexes: write M1):
    #0 deref_portentry lib/dns/dispatch.c:630
    #1 deactivate_dispsocket lib/dns/dispatch.c:861
    #2 udp_recv lib/dns/dispatch.c:1105
    #3 udp_exrecv lib/dns/dispatch.c:1028
    #4 dispatch lib/isc/task.c:1152
    #5 run lib/isc/task.c:1344
    #6 <null> <null>

    Previous read of size 8 at 0x000000000001 by thread T2 (mutexes: write M1, write M2):
    #0 socket_search lib/dns/dispatch.c:661
    #1 get_dispsocket lib/dns/dispatch.c:744
    #2 dns_dispatch_addresponse lib/dns/dispatch.c:3120
    #3 resquery_send lib/dns/resolver.c:2467
    #4 fctx_query lib/dns/resolver.c:2217
    #5 fctx_try lib/dns/resolver.c:4245
    #6 fctx_timeout lib/dns/resolver.c:4570
    #7 dispatch lib/isc/task.c:1152
    #8 run lib/isc/task.c:1344
    #9 <null> <null>
2020-10-23 13:49:41 +00:00
Mark Andrews 399cc3ebdf Merge branch '2215-dns_zoneflag_noixfr-is-misnamed' into 'main'
Resolve "DNS_ZONEFLAG_NOIXFR is misnamed"

Closes #2215

See merge request isc-projects/bind9!4285
2020-10-23 13:23:47 +00:00
Mark Andrews 3a044444bd DNS_ZONEFLAG_NOIXFR should be DNS_ZONEFLG_NOIXFR 2020-10-23 13:06:41 +00:00
Michal Nowak c29bd51c12 Merge branch 'mnowak/ifconfig.sh-use-posix-shell' into 'main'
Use POSIX shell in ifconfig.sh.in

See merge request isc-projects/bind9!4297
2020-10-23 08:40:33 +00:00
Michal Nowak a0426e0466 Use a POSIX shell in bin/tests/system/ifconfig.sh
Some non-POSIX shells, like /bin/csh on FreeBSD, are unable to execute
the config.guess file:

    + /bin/csh /var/tmp/gitlab_runner/builds/YdCaoq4b/0/mnowak/bind9/config.guess
    timestamp=2018-02-24: Command not found.
    me=config.guess: Command not found.
    Unmatched '"'.

When ./configure is run, it attempts to locate a POSIX-compliant shell.
Use the result of that search in the bin/tests/system/ifconfig.sh
script.
2020-10-23 10:32:21 +02:00
Mark Andrews 246324fc8e Merge branch 'marka-update-gitignore' into 'main'
update gitignore

See merge request isc-projects/bind9!4250
2020-10-22 23:41:44 +00:00
Mark Andrews 4f4a728dee update gitignore 2020-10-22 23:21:06 +00:00
Ondřej Surý f3d08cd4d5 Merge branch '2221-netmgr-fixes-from-unit-testing' into 'main'
Fix the problems found when writing the unit test for netmgr

See merge request isc-projects/bind9!4283
2020-10-22 21:50:20 +00:00
Evan Hunt 58a0e95976 CHANGES 2020-10-22 13:38:09 -07:00
Ondřej SurýandEvan Hunt 64e56a9704 Postpone the isc_app_shutdown() after rndc response has been sent
When `rndc stop` is received, the isc_app_shutdown() was being called
before response to the rndc client has been sent; as the
isc_app_shutdown() also tears down the netmgr, the message was never
sent and rndc would complain about connection being interrupted in the
middle of the transaction.  We now postpone the shutdown after the rndc
response has been sent.
2020-10-22 11:46:58 -07:00
Ondřej SurýandEvan Hunt 8797e5efd5 Fix the data race when read-writing sock->active by using cmpxchg 2020-10-22 11:46:58 -07:00
Ondřej SurýandEvan Hunt 5ef71c420f Ignore and don't log ISC_R_NOTCONNECTED from uv_accept()
When client disconnects before the connection can be accepted, the named
would log a spurious log message:

    error: Accepting TCP connection failed: socket is not connected

We now ignore the ISC_R_NOTCONNECTED result code and log only other
errors
2020-10-22 11:37:16 -07:00
Ondřej SurýandEvan Hunt f7c82e406e Fix the isc_nm_closedown() to actually close the pending connections
1. The isc__nm_tcp_send() and isc__nm_tcp_read() was not checking
   whether the socket was still alive and scheduling reads/sends on
   closed socket.

2. The isc_nm_read(), isc_nm_send() and isc_nm_resumeread() have been
   changed to always return the error conditions via the callbacks, so
   they always succeed.  This applies to all protocols (UDP, TCP and
   TCPDNS).
2020-10-22 11:37:16 -07:00
Ondřej SurýandEvan Hunt 6af08d1ca6 Fix the way tcp_send_direct() is used
There were two problems how tcp_send_direct() was used:

1. The tcp_send_direct() can return ISC_R_CANCELED (or translated error
   from uv_tcp_send()), but the isc__nm_async_tcpsend() wasn't checking
   the error code and not releasing the uvreq in case of an error.

2. In isc__nm_tcp_send(), when the TCP send is already in the right
   netthread, it uses tcp_send_direct() to send the TCP packet right
   away.  When that happened the uvreq was not freed, and the error code
   was returned to the caller.  We need to return ISC_R_SUCCESS and
   rather use the callback to report an error in such case.
2020-10-22 11:37:16 -07:00
Ondřej SurýandEvan Hunt d72bc3eb52 Detach the sock->server in uv_close() callback, not before 2020-10-22 11:37:16 -07:00
Ondřej SurýandEvan Hunt 97b33e5bde Explicitly stop reading before closing the nmtcpsocket
When closing the socket that is actively reading from the stream, the
read_cb() could be called between uv_close() and close callback when the
server socket has been already detached hence using sock->statichandle
after it has been already freed.
2020-10-22 11:37:16 -07:00
Witold KręcickiandEvan Hunt ff0a336d52 Proper handling of socket references in case of TCP conn failure. 2020-10-22 11:37:16 -07:00
Witold KręcickiandEvan Hunt ae9a6befa8 Don't crash if isc_uv_export returns an error in accept_connection.
isc_uv_export can return an error - e.g. EMFILE (from dup), handle this
nicely.
2020-10-22 11:37:16 -07:00
Ondřej SurýandEvan Hunt afca2e3b21 Fix the way udp_send_direct() is used
There were two problems how udp_send_direct() was used:

1. The udp_send_direct() can return ISC_R_CANCELED (or translated error
   from uv_udp_send()), but the isc__nm_async_udpsend() wasn't checking
   the error code and not releasing the uvreq in case of an error.

2. In isc__nm_udp_send(), when the UDP send is already in the right
   netthread, it uses udp_send_direct() to send the UDP packet right
   away.  When that happened the uvreq was not freed, and the error code
   was returned to the caller.  We need to return ISC_R_SUCCESS and
   rather use the callback to report an error in such case.
2020-10-22 11:37:16 -07:00
Michal Nowak 417632ebba Merge branch 'mnowak/test-coverage-visualization' into 'main'
Enable Test Coverage Visualization in merge requests

See merge request isc-projects/bind9!3875
2020-10-22 12:47:15 +00:00
Michal Nowak 2dabf328c4 Enable Test Coverage Visualization for merge requests
This feature allows GitLab to visualize test coverage information in the
file diff view of merge requests.

This commit makes the gcov CI job depend on the following chain of jobs:

    gcc:buster:amd64 → unit:gcc:buster:amd64 → system:gcc:buster:amd64

The reason for running the last two jobs above sequentially rather than
in parallel is that both of them create *.gcda files (containing
coverage data) in the same locations.  While some way of merging these
files from different job artifact archives could probably be designed
with the help of additional tools, the simplest thing to do is not to
run unit test and system test jobs in parallel, carrying *.gcda files
over between jobs as gcov knows how to append coverage data to existing
*.gcda files.

Also note that test coverage will not be visualized if any of the jobs
in the above dependency chain fails (because the gcov job will not be
run).
2020-10-22 14:46:23 +02:00
Michal Nowak 8d5a7cb0dc Merge branch '2060-identify-unused-source-files-via-gcov-ci-job' into 'main'
Resolve "Identify unused source files via gcov CI job"

Closes #2060

See merge request isc-projects/bind9!4261
2020-10-22 11:29:04 +00:00
Michal Nowak c453b79a7c Add CHANGES entry 2020-10-22 13:12:16 +02:00
Michal Nowak 7ef268bb4b Drop unused bufferlist code 2020-10-22 13:11:16 +02:00
Michal Nowak 1f6f7ccad6 Drop unused portlist code 2020-10-22 13:11:16 +02:00
Michal Nowak e67737aa75 Drop unused dbtable code 2020-10-22 13:11:16 +02:00
Michal Nowak e40097559a Merge branch '2218-ensure-use-of-echo_i-where-possible-in-system-tests' into 'main'
Ensure use of "echo_i" where possible

Closes #2218

See merge request isc-projects/bind9!4268
2020-10-22 08:16:41 +00:00
Michal Nowak 1319875c46 Ensure use of "echo_i" where possible
In many instances 'echo "I:' construct was used where echo_i function
should have been.
2020-10-22 09:54:24 +02:00
Michał Kępień beb3ad5494 Merge branch 'v9_17_6-release' into 'main'
Merge 9.17.6 release branch

See merge request isc-projects/bind9!4287
2020-10-22 07:02:41 +00:00
Michał Kępień 3e007be912 Set up release notes for BIND 9.17.7 2020-10-22 08:58:55 +02:00
Michał Kępień ca7096fd18 Bump BIND_BASELINE_VERSION for ABI checks 2020-10-22 08:58:55 +02:00
Michał Kępień fadaf3393d Bump BIND_BASELINE_VERSION for respdiff tests 2020-10-22 08:58:55 +02:00
Michał Kępień 58d8c52b09 Update BIND version to 9.17.6 2020-10-22 08:54:32 +02:00
Michał Kępień b054318491 Add a CHANGES marker 2020-10-22 08:54:32 +02:00
Michał Kępień 9014ff0cc6 Update library API versions 2020-10-22 08:54:32 +02:00
Michał Kępień 3916f81b1e Merge branch 'michal/prepare-release-notes-for-bind-9.17.6' into 'v9_17_6-release'
Prepare release notes for BIND 9.17.6

See merge request isc-private/bind9!214
2020-10-22 08:54:32 +02:00
Michał Kępień 2291356b08 Prepare release notes for BIND 9.17.6 2020-10-22 08:54:32 +02:00
Michał Kępień ef3bd208aa Reorder release notes 2020-10-22 08:54:32 +02:00
Michał Kępień 65f88149de Tweak and reword release notes 2020-10-22 08:54:32 +02:00
Michał Kępień 88cb988cc3 Restore release note for GL #2146 2020-10-22 08:54:32 +02:00
Michał Kępień 35fe33b7d9 Tweak and reword recent CHANGES entries 2020-10-22 08:54:32 +02:00
Michał Kępień 43beb080fc Minor documentation formatting tweaks 2020-10-22 08:54:32 +02:00
Diego dos Santos Fronza e64e3322a6 Merge branch '1736-stub-zone-foiled-by-minimal-responses' into 'main'
Resolve "stub zone foiled by minimal-responses"

Closes #1736

See merge request isc-projects/bind9!4113
2020-10-21 15:06:04 +00:00
Diego Fronza 6026cea10c Add CHANGES entry 2020-10-21 12:03:42 -03:00
Diego Fronza 8f5545fa0b Adjusted additional system test (NS, non-root zone)
After the updates from this branch, BIND now sends glue records for
NS queries even when configured with minimal-responses yes.
2020-10-21 12:03:42 -03:00