On Wed, Jul 16, 2014 at 11:32:53AM +0200, Lukas Slebodnik wrote: > ehlo, > > attached patches fix problems with mmap cache in client code. > The 1st patch is at least 5th version, because I found few problems in my > previous versions myself. I hope you will not find anything else :-) > > Patches change client code. It will be good to have at least 2 ACKs.
Currently we use sss_nss_lock() and sss_nss_unlock() to protect sss_nss_make_request() in multi-threaded clients (there is sss_pam_lock() and sss_pam_lock() for pam_sss as well). I wonder if a new pair like sss_mc_init_lock() sss_mc_init_unlock() might help to protect sss_nss_mc_get_ctx() as well? bye, Sumit > > How to test? > You can use simple program form ticket description #2380. > Program call getuid, therefore user should be from sssd and not /etc/passwd. > It needn't crash at first time, but you can use simple for loop > for i in {1..100}; do ./a1; done > > You can also use 3th patch to see code flow. e.g. > > bash-4.2$ ./a1 > more [2] threads try to init mem ctc > init.done > seed or table size do not match > sss_nss_check_header end:Invalid argument > more [3] threads try to init mem ctc > calling munmap > calling close > Segmentation fault (core dumped) > > > bash-4.2$ ./a1 > init.done > more [2] threads try to init mem ctc > more [3] threads try to init mem ctc > seed or table size do not match > sss_nss_check_header end:Invalid argument > seed or table size do not match > seed or table size do not match > calling munmap > calling close > sss_nss_check_header beg:Invalid argument > calling close > init.done > Floating point exception (core dumped) > > If you apply 3rd patch you can simulate old version with simple diff > diff --git a/src/sss_client/nss_mc_common.c b/src/sss_client/nss_mc_common.c > index 768763f..cea3a78 100644 > --- a/src/sss_client/nss_mc_common.c > +++ b/src/sss_client/nss_mc_common.c > @@ -131,7 +131,7 @@ errno_t sss_nss_mc_get_ctx(const char *name, struct > sss_cli_mc_ctx *ctx) > */ > fprintf(stderr, "more [%d] threads try to init mem ctc\n", > ctx->init_count); > - return EAGAIN; > + //return EAGAIN; > } > > ret = asprintf(&file, "%s/%s", SSS_NSS_MCACHE_DIR, name); > > LS _______________________________________________ sssd-devel mailing list sssd-devel@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/sssd-devel