Bug 46185 - tpp.c:63: __pthread_tpp_change_priority failed
Summary: tpp.c:63: __pthread_tpp_change_priority failed
Status: RESOLVED INVALID
Alias: None
Product: Apache httpd-2
Classification: Unclassified
Component: mpm_prefork (show other bugs)
Version: 2.2.10
Hardware: PC Linux
: P2 normal (vote)
Target Milestone: ---
Assignee: Apache HTTPD Bugs Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-11-11 03:19 UTC by Alexander Manhart
Modified: 2019-01-21 08:16 UTC (History)
1 user (show)



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Manhart 2008-11-11 03:19:31 UTC
Our System: SuSE Linux 10.3
gcc (GCC) 4.2.1 (SUSE Linux), libc-2.6.1.so

How Apache was built, configured:
CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=native -O2 -pipe" CXXFLAGS="${CFLAGS}" ./configure "--prefix=/opt/apache/2.2.10" --datadir=/media/iscsi/virtualweb --enable-layout=wochenblatt --with-mpm=prefork --enable-modules="so log_config dir mime" --enable-mods-shared="info status alias cern_meta usertrack asis include autoindex cgid imap deflate auth auth_anon auth_digest access cache mem_cache file-cache cgi env filter ext_filter expires headers file_cache mime_magic negotiation rewrite speling actions userdir setenvif authn-default authz-user authz-default" --enable-static-support --enable-nonportable-atomics --disable-ipv6 --enable-exception-hook --with-pic --with-included-apr

Additional we installed the module libphp4 (PHP 4.4.9).
apachectl -M
Loaded Modules:
 core_module (static)
 authn_file_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 auth_basic_module (static)
 log_config_module (static)
 mpm_prefork_module (static)
 http_module (static)
 mime_module (static)
 dir_module (static)
 so_module (static)
 expires_module (shared)
 headers_module (shared)
 alias_module (shared)
 cgi_module (shared)
 info_module (shared)
 status_module (shared)
 whatkilledus_module (shared)
 backtrace_module (shared)
 php4_module (shared)

cat /var/log/apache2/error_log shows:
httpd-prefork: tpp.c:63: __pthread_tpp_change_priority: Assertion `new_prio == -1 || (new_prio >= __sched_fifo_min_prio && new_prio <= __sched_fifo_max_prio)' failed.
[Tue Nov 11 11:17:25 2008] [notice] child pid 31832 exit signal Segmentation fault (11)

cat /etc/apache2/extra/httpd-mpm.conf shows our settings:
<IfModule mpm_prefork_module>
    StartServers                8
    MinSpareServers            16
    MaxSpareServers            32
    ServerLimit               256
    MaxClients                196
    MaxRequestsPerChild     10000
    GracefulShutdownTimeout     5
</IfModule>

cat /etc/apache2/extra/httpd-default.conf shows our settings:
Timeout 120
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 3
HostnameLookups Off

Maybe someone can explain, why we get continuously Segmentation faults on Linux SuSE 10.3?

Best regards,
Alexander Manhart
Comment 1 Ruediger Pluem 2008-11-11 03:39:23 UTC
tpp.c does not belong to the source code of httpd. So this error messages comes from a 3rd party module. Furthermore I am pretty sure that the 3rd party requires a stack trace for analysis.
Comment 2 Rainer Jung 2008-11-11 03:57:06 UTC
The file tpp.c is part of the NPTL thread library:

http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nptl/tpp.c?annotate=1.1.2.2&cvsroot=glibc

There are also other reports about this assertion failure for different application software. But

http://sourceware.org/bugzilla/show_bug.cgi?id=3610

at least indicates, that it could be an improper mutex handling.
Comment 3 Alexander Manhart 2008-11-11 04:20:55 UTC
How can I detect, which module causes this error? Or rather which module uses mutex handling? 

(Is it possible, that a module like APC, mysql within PHP writes to error_log from Apache?)
Comment 4 Rainer Jung 2008-11-11 04:34:24 UTC
You will need to produce a core dump. Such a core dump can then be inspected with gdb, which can give a stack trace with "bt" or "bt full".

You can learn more about cores with "man core". If you httpd does not switch user and/or group via "User" or "Group", then it should automatically produce a core, when the assertin comes up, if you need to change User or Group (e.g. when using privileged ports), you can try to set CoreDumpDirectory in your httpd configuration and see, whether that produces a core. You might also need to change your max core sizes using "ulimit".
Comment 5 Alexander Manhart 2008-11-11 04:42:37 UTC
I read about it, but never used gdb. I'll try it ;-), thank you very much for the tips!