#89 Race condition leads to crash during dynamic update processing
Closed: Fixed None Opened 11 years ago by pspacek.

Plugin crashes sometimes if many dynamic update request are processesed in the same time.

Steps to reproduce:

1) create huge text file with commands for nsupdate utility

  • it has to add many (mostly) unique records
  • generator is attached

2) cross your fingers

3) start nsupdate -g < list_file_name in parallel for all lists

I used following BASH command:
(nsupdate -g < 1) & (nsupdate -g < 2) & (nsupdate -g < 3)

4) hope and wait for a crash

Here is an backtrace:

(gdb) bt
#0  0x00007ffff509f925 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff50a10d8 in __GI_abort () at abort.c:91
#2  0x000055555558536b in assertion_failed (file=<optimized out>, line=<optimized out>, type=<optimized out>, cond=<optimized out>) at ./main.c:219
#3  0x00007ffff62bdc3a in isc_assertion_failed (file=file@entry=0x7ffff798f148 "rdata.c", line=line@entry=852, type=type@entry=isc_assertiontype_require, 
    cond=cond@entry=0x7ffff79923e7 "rdata != ((void *)0)") at assertions.c:57
#4  0x00007ffff78f2eaa in dns_rdata_tostruct (rdata=0x0, target=<optimized out>, mctx=<optimized out>) at rdata.c:852
#5  0x00007ffff0d9cd73 in modify_soa_record (ldap_inst=0x7ffff7fa9f10, ldap_conn=0x7ffff7fc12d0, zone_dn=0x7fffec5c1420 "idnsName=e.org,cn=dns,dc=e,dc=org", rdata=0x0)
    at ldap_helper.c:2397
#6  0x00007ffff0d9d55c in modify_ldap_common (owner=0x7ffff107b090, ldap_inst=0x7ffff7fa9f10, rdlist=0x7fffec5c25b0, mod_op=0, delete_node=isc_boolean_false)
    at ldap_helper.c:2483
#7  0x00007ffff0d9dedd in write_to_ldap (owner=0x7ffff107b090, ldap_inst=0x7ffff7fa9f10, rdlist=0x7fffec5c25b0) at ldap_helper.c:2694
#8  0x00007ffff0d94bb6 in addrdataset (db=0x7ffff1080bf0, node=0x7ffff107b088, version=0x7ffff0fab458, now=0, rdataset=0x7ffff31f5ff0, options=13, addedrdataset=0x0)
    at ldap_driver.c:991
#9  0x00007ffff78763a8 in diff_apply (diff=diff@entry=0x7ffff31f69f0, db=db@entry=0x7ffff1080bf0, ver=ver@entry=0x7ffff0fab458, warn=warn@entry=isc_boolean_true)
    at diff.c:351
#10 0x00007ffff7876b8a in dns_diff_apply (diff=diff@entry=0x7ffff31f69f0, db=db@entry=0x7ffff1080bf0, ver=ver@entry=0x7ffff0fab458) at diff.c:437
#11 0x00005555555a543d in do_one_tuple (tuple=tuple@entry=0x7ffff31f6b28, db=db@entry=0x7ffff1080bf0, ver=ver@entry=0x7ffff0fab458, diff=diff@entry=0x7ffff31f6b30)
    at update.c:413
#12 0x00005555555aa13a in update_soa_serial (method=(unknown: 3200171710), mctx=0x7fffd40023d0, diff=0x7ffff31f6b30, ver=0x7ffff0fab458, db=0x7ffff1080bf0)
    at update.c:1401
#13 update_action (task=0x7ffff7f9c850, event=0x7fffd4019890) at update.c:3028
#14 0x00007ffff62dd13e in dispatch (manager=0x7ffff7f88010) at task.c:1109
#15 run (uap=0x7ffff7f88010) at task.c:1279
#16 0x00007ffff5c92d14 in start_thread (arg=0x7ffff31f8700) at pthread_create.c:309
#17 0x00007ffff515b67d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115

Attaching new scripts for bug reproduction.

It was fixed in version 2.0 back in 2012.

Metadata Update from @pspacek:
- Issue assigned to pspacek
- Issue set to the milestone: 3.0 IPA

7 years ago

Login to comment on this ticket.

Metadata