[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: daemon: select failed (22): Invalid argument



You likely should file an ITS for this.  <http://www.openldap.org/its/>

At 09:32 AM 2/14/2005, Robert Roll wrote:
>        I am encountering the following:
>
>                daemon: select failed (22): Invalid argument
>
>        This only seemed to crop up when I was attempting a syncrepl.
>However, after seeing where its occurring, it's not clear to me that it
>might not be able to occur at other times. 
>
>Config:
>        Sparc Solaris 9
>        openldap 2.2.23
>        db 4.3.27
>
>        Below is some output demonstrating the problem. Note, I did add
>some debug print statements to ../servers/slapd/daemon.c . I have
>annotated them below. It appears that a large negative seconds is passed
>in the time structure to select. That is what is causing the invalid
>argument. 
>
>        I managed to "fix" this for now, by changing an equals
>comparison to a less than or equals. I didn't explore the logic real
>close, so I am not sure if this is the best thing to do or not.
>
>        I have also included a diff, showing my debug print statements,
>along with the comparison change I made to get around my immediate
>problem.
>
>BTW -- 
>
>         I have also encountered a number of what seem to be already
>reported bugs about the syncrepl provider server terminating after an
>improper termination of the client machine.
>
>        Maybe, it is documented somewhere and I missed it. It made all
>the difference in the world to index entryUUID. If this isn't
>documented, it really should be. 
>         
>        I think this syncrepl stuff is pretty cool and I really hope
>those working on it can get the bugs worked out. I really appreciate
>their efforts ! :)
>
>
>                                                        Thanks,
>
>                                                        Robert
>
>
>Robert Roll
>University of Utah
>OIT (Office of Information Technology)
>Robert.Roll@Utah.Edu
>(801) 581-7655
>
>
>
>ldap_chkResponseList for msgid=-1, all=0
>ldap_chkResponseList returns NULL
>ldap_int_select
>connection_get(11): got connid=0
>daemon: added 11r
>
>***DEBUG PRINT***
>diff 1, tdelta 1, cat->tv_sec 1108397241, now 1108397240 now/1000 
> 1108397
>
>daemon: select: listen=7 active_threads=0 tvp=zero
>daemon: select: listen=8 active_threads=0 tvp=zero
>daemon: activity on 1 descriptors
>
>***DEBUG PRINT***
>diff -1108397241, tdelta 1, cat->tv_sec 0, now 1108397241 now/1000
>1108397
>
>
>daemon: select: listen=7 active_threads=0 tvp=zero
>daemon: select: listen=8 active_threads=0 tvp=zero
>
>*** DEBUG PRINT ***
>nfds: 12 tv.tv_sec -1108397241, tv.tv_usec 0 tvp->tv_sec -1108397241,
>tvp->tv_usec 0
>
>daemon: select failed (22): Invalid argument
>daemon: abnormal condition, shutdown initiated.
>daemon: closing 7
>daemon: closing 8
>slapd shutdown: waiting for 1 threads to terminate
>=>do_syncrepl
>connection_get(11): got connid=0
>daemon: removing 11r
>ldap_unbind
>ldap_free_request (origid 2, msgid 2)
>ldap_free_connection
>ldap_send_unbind
>ber_flush: 7 bytes to sd 11
>ldap_free_connection: actually freed
>slapd shutdown: initiated
>====> bdb_cache_release_all
>slapd shutdown: freeing system resources.
>slapd stopped.
>
>
>######## Diff #############3
>
>> diff daemon.c.bak daemon.c
>1388c1388,1389
><                       if ( diff == 0 )
>---
>>                       printf("diff %d, tdelta %d, cat->tv_sec %d, now
>%d now/1000 %d\n", diff, tdelta, cat->tv_sec, now, now/1000);
>>                       if ( diff <= 0 )
>1437a1439,1440
>> 
>>                                 printf("nfds: %d tv.tv_sec %d,
>tv.tv_usec %d tvp->tv_sec %d, tvp->tv_usec %d\n", nfds, tv.tv_sec,
>tv.tv_usec,  tvp->tv_sec, tvp->tv_usec);
>> 
>
>
>
>
>