Bug 1368209
| Summary: | Crash in import_wait_for_space_in_fifo(). | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 6 | Reporter: | Têko Mihinto <tmihinto> | ||||||
| Component: | 389-ds-base | Assignee: | Noriko Hosoi <nhosoi> | ||||||
| Status: | CLOSED ERRATA | QA Contact: | Viktor Ashirov <vashirov> | ||||||
| Severity: | urgent | Docs Contact: | |||||||
| Priority: | urgent | ||||||||
| Version: | 6.0 | CC: | ekeck, gparente, msauton, nhosoi, nkinder, rmeggins, sramling, tbordaz | ||||||
| Target Milestone: | pre-dev-freeze | Keywords: | ZStream | ||||||
| Target Release: | --- | ||||||||
| Hardware: | x86_64 | ||||||||
| OS: | Linux | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | 389-ds-base-1.2.11.15-82.el6 | Doc Type: | If docs needed, set a value | ||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | |||||||||
| : | 1381153 (view as bug list) | Environment: | |||||||
| Last Closed: | 2017-03-21 10:22:27 UTC | Type: | Bug | ||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Embargoed: | |||||||||
| Bug Depends On: | |||||||||
| Bug Blocks: | 1381153 | ||||||||
| Attachments: |
|
||||||||
Created attachment 1191946 [details]
Stack trace.
Created attachment 1192177 [details]
Tentative fix to sync exit of import_main with bulk_import_queue
Upstream ticket: https://fedorahosted.org/389/ticket/48960 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2017-0667.html |
Description of problem: An online reinitialization from a supplier to a consumer is causing the crash of the consumer after 15 hours. Version-Release number of selected component (if applicable): System Information: OS: RHEL 6.6 DS Version: 389-ds-base-1.2.11.15-74.el6.x86_64 How reproducible: Not sure how easy to reproduce as the import is running for a long time ( 15 hours ) before the crash. Steps to Reproduce: Customer was reinitializing a consumer from a supplier using the Console. After some hours, the consumer crashed. Actual results: Expected results: Additional info: The crash seems to happen in the import code: ======================================== Core was generated by `/usr/sbin/ns-slapd -D /etc/dirsrv/slapd-389 -i /var/run/dirsrv/slapd-389.pid -w'. Program terminated with signal 11, Segmentation fault. #0 0x00007f688fa8d072 in import_wait_for_space_in_fifo (job=0x7f6744032850, new_esize=7011) at ldap/servers/slapd/back-ldbm/import-threads.c:1857 1857 temp_ep = job->fifo.item[i].entry; ======================================== An excerpt of the code: ======================================== 1844 static void 1845 import_wait_for_space_in_fifo(ImportJob *job, size_t new_esize) 1846 { 1847 struct backentry *temp_ep = NULL; 1848 size_t i; 1849 int slot_found; 1850 PRIntervalTime sleeptime; 1851 1852 sleeptime = PR_MillisecondsToInterval(import_sleep_time); 1853 1854 /* Now check if fifo has enough space for the new entry */ 1855 while ((job->fifo.c_bsize + new_esize) > job->fifo.bsize) { 1856 for ( i = 0, slot_found = 0 ; i < job->fifo.size ; i++ ) { 1857 temp_ep = job->fifo.item[i].entry; 1858 if (temp_ep) { 1859 if (temp_ep->ep_refcnt == 0 && temp_ep->ep_id <= job->ready_EID) { 1860 job->fifo.item[i].entry = NULL; 1861 if (job->fifo.c_bsize > job->fifo.item[i].esize) 1862 job->fifo.c_bsize -= job->fifo.item[i].esize; 1863 else 1864 job->fifo.c_bsize = 0; 1865 backentry_free(&temp_ep); 1866 slot_found = 1; 1867 } 1868 } 1869 } 1870 if ( slot_found == 0 ) 1871 DS_Sleep(sleeptime); 1872 } 1873 } ========================================