> On 31 Aug 2020, at 19:27, Jan Tomasek <[email protected]> wrote: > > Hi Mark, > > On 8/28/20 2:51 PM, Mark Reynolds wrote: >> Sorry the plugin guide has not been maintained in a long time. There was a >> discussion to just remove it. Can you provide the stack trace from the >> crash? I'm sure we help get it straightened out... > > you are very kind. My C knowledge is kinda outdated, it's about 20years I > last time created something bigger in C. > > I'm fighting with gdb how to be able trace debug 389 ds with plugin loaded: > > root@ldap33:~# gdb /usr/sbin/ns-slapd > >> (gdb) run -d 65536 -D /etc/dirsrv/slapd-ldap33 -i >> /var/run/dirsrv/slapd-ldap33.pid >> Starting program: /usr/sbin/ns-slapd -d 65536 -D /etc/dirsrv/slapd-ldap33 >> -i /var/run/dirsrv/slapd-ldap33.pid >> [Thread debugging using libthread_db enabled] >> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". >> [31/Aug/2020:11:14:36.396980567 +0200] - DEBUG - syntax-plugin - => bin_init >> ... >> [31/Aug/2020:11:15:11.443569660 +0200] - ERR - altpass-plugin - do_pre_bind: >> 1 >> [31/Aug/2020:11:15:11.445011559 +0200] - ERR - altpass-plugin - do_pre_bind: >> 2 >> [31/Aug/2020:11:15:11.446302153 +0200] - ERR - altpass-plugin - do_pre_bind: >> 3 >> [31/Aug/2020:11:15:11.447546080 +0200] - ERR - altpass-plugin - do_pre_bind: >> 4 >> [31/Aug/2020:11:15:11.448848356 +0200] - ERR - altpass-plugin - do_pre_bind: >> 5 >> [31/Aug/2020:11:15:11.450387903 +0200] - ERR - altpass-plugin - do_pre_bind: >> 6 >> [31/Aug/2020:11:15:11.451510488 +0200] - ERR - altpass-plugin - do_pre_bind: >> 7 >> [31/Aug/2020:11:15:11.453559193 +0200] - ERR - altpass-plugin - do_pre_bind: >> 8 >> [31/Aug/2020:11:15:11.454709087 +0200] - ERR - altpass-plugin - do_pre_bind: >> 9 >> [31/Aug/2020:11:15:11.455636136 +0200] - ERR - altpass-plugin - do_pre_bind: >> 9a >> [31/Aug/2020:11:15:11.456657442 +0200] - ERR - altpass-plugin - do_pre_bind: >> 9a: filter=(memberNisNetgroup=2001:718:1:6::134:138) >> Thread 17 "ns-slapd" received signal SIGSEGV, Segmentation fault. >> [Switching to Thread 0x7fffd0ff9700 (LWP 28079)] >> 0x00007ffff4318b52 in do_pre_bind () from >> /usr/lib/x86_64-linux-gnu/dirsrv/plugins/altpass-plugin.so >> (gdb) bt >> #0 0x00007ffff4318b52 in do_pre_bind () at >> /usr/lib/x86_64-linux-gnu/dirsrv/plugins/altpass-plugin.so >> #1 0x00007ffff4318f3b in pre_bind () at >> /usr/lib/x86_64-linux-gnu/dirsrv/plugins/altpass-plugin.so >> #2 0x00007ffff7f0c409 in None () at >> /usr/lib/x86_64-linux-gnu/dirsrv/libslapd.so.0 >> #3 0x00007ffff7f0c654 in plugin_call_plugins () at >> /usr/lib/x86_64-linux-gnu/dirsrv/libslapd.so.0 >> #4 0x000055555556907e in None () >> #5 0x000055555557045a in None () >> #6 0x00007ffff7c13ec7 in None () at /usr/lib/x86_64-linux-gnu/libnspr4.so >> #7 0x00007ffff7bb3fa3 in start_thread (arg=<optimized out>) at >> pthread_create.c:486 >> #8 0x00007ffff77ed4cf in clone () at >> ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 > > When I set breakpoint at start of do_pre_bind():
Reading this trace, it looks like you are missing debug symbols or devel information. Honestly, I'm not sure how to get this on debian, maybe "pkgname-dbgsym" aka 389-ds-dbgsym or similar needs to be installed? > >> (gdb) b do_pre_bind >> Breakpoint 1 at 0x7ffff431879a >> (gdb) r >> The program being debugged has been started already. >> Start it from the beginning? (y or n) y >> [Switching to Thread 0x7fffd0ff9700 (LWP 28116)] >> Thread 17 "ns-slapd" hit Breakpoint 1, 0x00007ffff431879a in do_pre_bind () >> from /usr/lib/x86_64-linux-gnu/dirsrv/plugins/altpass-plugin.so >> (gdb) (gdb) l >> 1 ../sysdeps/x86_64/crti.S: No such file or directory. >> (gdb) > > Tips how to properly set debug environment would be very welcome. I was > unable to locate crti.S anywhere in debian packages > https://packages.debian.org/search?searchon=contents&keywords=x86_64%2Fcrti.S&mode=path&suite=stable&arch=any > > Source code around SIGSEGV place: Well, you need to also compile your plugin with debug symbols too in order to see what's going on in there ... I think you can add -g3 to your gcc invocation to do this. There isn't really a penalty to having debug symbols around even for production, so feel free to leave -g3 in your compiler calls. > >> slapi_entry_free(user_entry); >> user_entry = NULL; >> log_fatal("do_pre_bind: 9\n"); >> // Find corresponding service(s) >> char filter[200]; >> snprintf(filter, sizeof(filter), "(memberNisNetgroup=%s)", clientIP); >> log_fatal("do_pre_bind: 9a\n"); >> log_fatal("do_pre_bind: 9a: filter=%s\n", filter); >> find_entries(conf->group_suffix, filter, attributes, &matching_services); > > function find_entries() is never entered. If there is a segfault around here, then it would likely be in the snprintf call. clientIP may be NULL, which could cause this. You could check this with "if (!clientIP) { ... }" and then log a message. Hope that helps, > > Thanks > -- > ----------------------- > Jan Tomasek aka Semik > http://www.tomasek.cz/ > > _______________________________________________ > 389-users mailing list -- [email protected] > To unsubscribe send an email to [email protected] > Fedora Code of Conduct: > https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: > https://lists.fedoraproject.org/archives/list/[email protected] — Sincerely, William Brown Senior Software Engineer, 389 Directory Server SUSE Labs _______________________________________________ 389-users mailing list -- [email protected] To unsubscribe send an email to [email protected] Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/[email protected]
