[squid-dev] Broken trunk after r14735, r14726

Alex Rousskov rousskov at measurement-factory.com
Fri Jul 15 19:02:05 UTC 2016


Hello,

    There are two more recent changes that broke trunk:

* After r14735 (Replaced TidyPointer with std::unique_ptr), Squid cannot
start due to an "std::bad_function_call" exception.

* After r14726 (GnuTLS: support for TLS session resume): Squid segfaults
when attempting to connect to a Secure ICAP service. Official Squid
v4.0.12 suffers from this bug.

Stack traces from both crashes are quoted at the end of this email.

Please fix these regressions or undo the changes that created or exposed
them.


Thank you,

Alex.

---------- stack traces ------------
> g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2

* bad_function_call exception on startup (tested with r14735, r14737,
r14740, r14742, r14744):

> terminate called after throwing an instance of 'std::bad_function_call'
>   what():  bad_function_call
> 
> Program received signal SIGABRT, Aborted.
> 0x00007ffff5a9ccc9 in __GI_raise (sig=sig at entry=6)
>     at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> 56      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
> (gdb) where
> #0  0x00007ffff5a9ccc9 in __GI_raise (sig=sig at entry=6)
>     at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> #1  0x00007ffff5aa00d8 in __GI_abort () at abort.c:89
> #2  0x00007ffff63a76b5 in __gnu_cxx::__verbose_terminate_handler() ()
>    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #3  0x00007ffff63a5836 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #4  0x00007ffff63a48f9 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #5  0x00007ffff63a54aa in __gxx_personality_v0 ()
>    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #6  0x00007ffff5e3aff3 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
> #7  0x00007ffff5e3b37b in _Unwind_RaiseException ()
>    from /lib/x86_64-linux-gnu/libgcc_s.so.1
> #8  0x00007ffff63a5a95 in __cxa_throw ()
>    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #9  0x00007ffff63f7aa2 in std::__throw_bad_function_call() ()
>    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> #10 0x000000000099b53e in std::function<int (bio_st*)>::operator()(bio_st*) const (this=0x7fffffffe0e0, __args#0=0x101d8b0)
>     at /usr/include/c++/4.8/functional:2463
> #11 0x000000000099ae87 in std::unique_ptr<bio_st, std::function<int (bio_st*)> >::~unique_ptr() (this=0x7fffffffe0e0, __in_chrg=<optimized out>)
>     at /usr/include/c++/4.8/bits/unique_ptr.h:184
> #12 0x00000000009a8fa7 in Ssl::readSslPrivateKey (
>     keyFilename=0xff75a0 "/home/tester/testing/ssl/CA-priv+pub.pem", 
>     passwd_callback=0x0) at gadgets.cc:672
> #13 0x000000000099954d in Ssl::readCertChainAndPrivateKeyFromFiles (cert=..., 
>     pkey=..., chain=..., 
>     certFilename=0x101d7c0 "/home/tester/testing/ssl/CA-priv+pub.pem", 
>     keyFilename=0xff75a0 "/home/tester/testing/ssl/CA-priv+pub.pem")
>     at support.cc:1270
> #14 0x00000000009f9196 in AnyP::PortCfg::configureSslServerContext (
>     this=0xff72d0) at PortCfg.cc:120
> #15 0x00000000006ac0e0 in configDoConfigure () at cache_cf.cc:910
> #16 0x00000000006ab349 in parseConfigFile (
>     file_name=0xfe8db0 "/usr/local/squid/etc/squid-trunk.conf")
>     at cache_cf.cc:596
> #17 0x00000000007c58ff in SquidMain (argc=4, argv=0x7fffffffe698)
>     at main.cc:1521
> #18 0x00000000007c5504 in SquidMainSafe (argc=4, argv=0x7fffffffe698)
>     at main.cc:1372
> #19 0x00000000007c54e1 in main (argc=4, argv=0x7fffffffe698) at main.cc:1365


* segfault when attempting to connect to a Secure ICAP REQMOD service
(tested with r14726, r14734):

> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000014991f0 in ?? ()
> (gdb) where
> #0  0x00000000014991f0 in ?? ()
> #1  0x000000000097f6a7 in Ssl::PeerConnector::negotiateSsl (this=0x1498900)
>     at PeerConnector.cc:161
> #2  0x000000000097eda4 in Ssl::PeerConnector::start (this=0x1498900)
>     at PeerConnector.cc:57
> #3  0x000000000090d2a7 in NullaryMemFunT<AsyncJob>::doDial (this=0x1497630)
>     at ../../src/base/AsyncJobCalls.h:102
> #4  0x000000000090d2f3 in JobDialer<AsyncJob>::dial (this=0x1497630, call=...)
>     at ../../src/base/AsyncJobCalls.h:174
> #5  0x000000000090cfaf in AsyncCallT<NullaryMemFunT<AsyncJob> >::fire (
>     this=0x1497600) at ../../src/base/AsyncCall.h:145
> #6  0x000000000090a2a8 in AsyncCall::make (this=0x1497600) at AsyncCall.cc:40
> #7  0x000000000090dcd3 in AsyncCallQueue::fireNext (this=0x1026ba0)
>     at AsyncCallQueue.cc:56
> #8  0x000000000090da44 in AsyncCallQueue::fire (this=0x1026ba0)
>     at AsyncCallQueue.cc:42
> #9  0x0000000000741af7 in EventLoop::dispatchCalls (this=0x7fffffffe4d0)
>     at EventLoop.cc:144
> #10 0x0000000000741a1f in EventLoop::runOnce (this=0x7fffffffe4d0)
>     at EventLoop.cc:121
> #11 0x0000000000741886 in EventLoop::run (this=0x7fffffffe4d0)
>     at EventLoop.cc:83
> #12 0x00000000007b5dea in SquidMain (argc=4, argv=0x7fffffffe698)
>     at main.cc:1651
> #13 0x00000000007b52da in SquidMainSafe (argc=4, argv=0x7fffffffe698)
>     at main.cc:1372
> #14 0x00000000007b52b7 in main (argc=4, argv=0x7fffffffe698) at main.cc:1365


More information about the squid-dev mailing list