[cups-devel] Add printer, pam with libprelude, core-dump/ANOM_ABEND

Helge Blischke helgeblischke at web.de
Tue Feb 28 08:58:08 PST 2017


> Am 28.02.2017 um 12:53 schrieb tjoen <tjoen at dds.nl>:
> 
> On Mon, 2017-02-27 at 22:30 +0100, Helge Blischke wrote:
>>> Am 27.02.2017 um 20:13 schrieb tjoen <tjoen at dds.nl>:
>>> 
>>> #0  0x00007ffff507c07f in raise () from /lib/libc.so.6
>>>> #1  0x00007ffff507d4aa in abort () from /lib/libc.so.6
>>>> #2  0x00007ffff37a20a6 in _prelude_thread_deinit () at \
>>>>         prelude-thread.c:84
>>>> #3  0x00007ffff378f3af in prelude_deinit () at prelude.c:268
>>>> #4  0x00007ffff744a71f in prelude_send_alert \
>>>>         (pamh=pamh at entry=0x555555853be0, 
>>>>     authval=authval at entry=0) at pam_prelude.c:450
>>>> #5  0x00007ffff74451f3 in pam_authenticate (pamh=0x555555853be0, 
>>>>     flags=<optimized out>) at pam_auth.c:45
>>> 
>>> With --enable-debug (default is no) in Linux-PAM I get
>>> 
>>> #0  0x00007ffff507607f in raise () from /lib/libc.so.6
>>> #1  0x00007ffff50774aa in abort () from /lib/libc.so.6
>>> #2  0x00007ffff379c0a6 in _prelude_thread_deinit () at \
>>> 	prelude-thread.c:84
>>> #3  0x00007ffff37893af in prelude_deinit () at prelude.c:268
>>> #4  0x00007ffff744792f in prelude_send_alert \
>>> 	(pamh=pamh at entry=0x55555583c2a0, 
>>>     authval=authval at entry=0) at pam_prelude.c:450
>>> #5  0x00007ffff743f88c in pam_authenticate (pamh=0x555550583c2a0, 
>>>     flags=<optimized out>) at pam_auth.c:45
>>> 
>>> How do I get rid of that "<optimized out>" ?
>>> 
>>>> #6  0x0000555555560c99 in cupsdAuthorize (con=0x555555839630) at
>>>> \
>>>>         auth.c:616
> 
>> First, I’d edit the Makefile (after running configure) and reduce the
>> optimizing number by one
>> (repeat this until the „optimized out“ disappears).
>> If that does not help, ask your gcc for special options concerning
>> optimizing
>> (maybe: gcc —help=optimizers). Depending on the gcc release, there
>> should be an option to 
>> skip the „dead code eliminator“.
> 
> I looked at the source of #6 and found that the value of the flags
> is PAM_SILENT see /usr/include/security/_pam_types.h
> I did a grep for pam_authenticate in sources of shadow-utils
> and the value of the flags there is 0=PAM_SUCCESS
> 
> Could that be the difference?
> _______________________________________________

I don’t know if that is part of the issue. But the „optimized out“ looks like
the compiler (gcc, I presume), thinks this is dead code and thus eliminates it or
brackets it with #if 0 .. #endif and thus does not generate machine code for this piece
of source.
My suspicion is that the compiler’s dead code check is not complete in the sense that
some initial conditions which may lead to execute this part are not properly recognized.

So I’d heavily recommend to reduce the optimizing level as suggested before speculating
about the effect of other tags in the source code.

Helge




More information about the cups mailing list