Here is the backtrace. The table was not empty, this is the content: (gdb) print **table $3 = {piles = {b = 0x7ffff861ea70, comp = 0x7ffff1e7d602 <engine_pile_cmp_LHASH_COMP>, hash = 0x7ffff1e7d5e0 <engine_pile_hash_LHASH_HASH>, num_nodes = 8, num_alloc_nodes = 16, p = 0, pmax = 8, up_load = 512, down_load = 256, num_items = 12, num_expands = 0, num_expand_reallocs = 0, num_contracts = 0, num_contract_reallocs = 0, num_hash_calls = 25, num_comp_calls = 1, num_insert = 12, num_replace = 0, num_delete = 0, num_no_delete = 0, num_retrieve = 1, num_retrieve_miss = 12, num_hash_comps = 10, error = 0}}
Maybe I was accessing it incorrectly before, at wrong time or from wrong frame. I have Intel(R) Core(TM) i7 CPU M 620; there is aes among the cpu flags and a kernel module aesni_intel loaded and used, so I suppose the AES-NI is supported.
GNU gdb (GDB) 7.1-ubuntu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /usr/sbin/apache2...done. (gdb) handle SIG33 pass nostop noprint Signal Stop Print Pass to program Description SIG33 No No Yes Real-time event 33 (gdb) set pagination 0 (gdb) un Ambiguous command "un": undisplay, unset, until. (gdb) run Starting program: /usr/sbin/apache2 -k start -X [Thread debugging using libthread_db enabled] [New Thread 0x7fffe8d5d710 (LWP 13393)] [Thread 0x7fffe8d5d710 (LWP 13393) exited] Program received signal SIGSEGV, Segmentation fault. 0x00007ffff214ea60 in sha1_md () from /lib/libcrypto.so.0.9.8 (gdb) backtrace full #0 0x00007ffff214ea60 in sha1_md () from /lib/libcrypto.so.0.9.8 No symbol table info available. #1 0x00007ffff1e7c7cf in engine_unlocked_init (e=0x7ffff8641160) at eng_init.c:67 to_return = 1 #2 0x00007ffff1e7dc34 in engine_table_select (table=0x7ffff216c860, nid=427) at eng_table.c:274 ret = 0x7ffff8641160 tmplate = {nid = 427, sk = 0xa8, funct = 0x7ffff83af2f8, uptodate = -248008672} fnd = 0x7ffff8641940 initres = 0 loop = 1 #3 0x00007ffff1e7f095 in ENGINE_get_cipher_engine (nid=427) at tb_cipher.c:115 No locals. #4 0x00007ffff1e96ad6 in do_evp_enc_engine (ctx=0x7ffff86f6ea0, pcipher=0x7fffffffda30, impl=0x0) at enc_min.c:161 No locals. #5 0x00007ffff1e96c24 in EVP_CipherInit_ex (ctx=0x7ffff86f6ea0, cipher=0x7ffff214a0e0, impl=0x0, key=0x7ffff86f6e38 "B\312v\311\345\312\345\210\367a4FWx\316\030Cz\a'k\330ldm\322\316\062v\361p\357\301\0...@׆>\332ev\276\325*N\242,<\320,\262]͕\375S\260", iv=0x7ffff86f6e78 "\234*\030\061v\034/\214/\241iр\213\236\347Д\243j\002j\266\236Q\376Q\317\363\067\353", <incomplete sequence \346\261>, enc=0) at enc_min.c:229 No locals. #6 0x00007ffff382f686 in tls1_change_cipher_state (s=0x7ffff86d6ba0, which=33) at t1_enc.c:434 empty = "" p = 0x7ffff86f6e10 "\215\022^\226\064\t\033fۿ\260\243\367\353/\367\305\336\301\271SZa\v\202\355\330Y4}\307\376z\351\264Hw\225\352\201B\312v\311\345\312\345\210\367a4FWx\316\030Cz\a'k\330ldm\322\316\062v\361p\357\301\0...@׆>\332ev\276\325*N\242,<\320,\262]͕\375S\260" key_block = 0x7ffff86f6e10 "\215\022^\226\064\t\033fۿ\260\243\367\353/\367\305\336\301\271SZa\v\202\355\330Y4}\307\376z\351\264Hw\225\352\201B\312v\311\345\312\345\210\367a4FWx\316\030Cz\a'k\330ldm\322\316\062v\361p\357\301\0...@׆>\332ev\276\325*N\242,<\320,\262]͕\375S\260" mac_secret = 0x7ffff86d6e84 "\215\022^\226\064\t\033fۿ\260\243\367\353/\367\305\336\301\271" exp_label = 0x7ffff384c74b "client write key" buf = "\000\000\000\000\210\000\000\000\360ko\370\377\177\000\000\020no\370\377\177\000\000\240km\370\377\177\000\000\370\362:\370\377\177\000\...@~l\367\377\177\000\000\300\333\377\377\377\177\000\000(2m\370\377\177\000\000\370\362:\370\377\177\000\000 \260\067\361\377\177\000\000\210\324m", <incomplete sequence \370> tmp1 = "\000\000\000\000\000\000\000\000`\352\024\362\377\177\000\000\340\240\024\362\377\177\000\000\360ko\370\377\177\000" tmp2 = " \334\377\377\377\177\000\000\264\370\202\363\377\177\000\000\234\256\301\325\000\000\000\000\240km\370\377\177\000" iv1 = "\020no\370\377\177\000\000\262U\341\361\377\177\000\000\377\377\377\377\377\377\377\377\360ko\370\377\177\000" iv2 = "\332\034\313\006\302\237-\203uW\341\361\377\177\000\000\210\000\000\000\000\000\000\000\360ko\370\377\177\000" ms = 0x7ffff86f6e10 "\215\022^\226\064\t\033fۿ\260\243\367\353/\367\305\336\301\271SZa\v\202\355\330Y4}\307\376z\351\264Hw\225\352\201B\312v\311\345\312\345\210\367a4FWx\316\030Cz\a'k\330ldm\322\316\062v\361p\357\301\0...@׆>\332ev\276\325*N\242,<\320,\262]͕\375S\260" key = 0x7ffff86f6e38 "B\312v\311\345\312\345\210\367a4FWx\316\030Cz\a'k\330ldm\322\316\062v\361p\357\301\0...@׆>\332ev\276\325*N\242,<\320,\262]͕\375S\260" iv = 0x7ffff86f6e78 "\234*\030\061v\034/\214/\241iр\213\236\347Д\243j\002j\266\236Q\376Q\317\363\067\353", <incomplete sequence \346\261> er1 = 0x7ffff86d6f2c "ld\017\332\034\313\006\302\237-\203\212\002\374d\225\361b\255\3...@\341\232Ʀ\323\004i\211\251\250" er2 = 0x7ffff86d6f0c "ld\017\332rx\224\021\065\213}\201\351\364͋\271b\370\tڱ\373\177\062\r\177\...@\337g\271ld\017\332\034\313\006\302\237-\203\212\002\374d\225\361b\255\343a@\341\232Ʀ\323\004I\211\251\250" client_write = 1 dd = 0x7ffff86f6ea0 c = 0x7ffff214a0e0 comp = 0x0 m = 0x7ffff214ea60 is_export = 0 n = 136 i = 20 j = 32 k = 16 exp_label_len = 16 cl = 32 reuse_dd = 0 #7 0x00007ffff3828cbe in ssl3_do_change_cipher_spec (s=0x7ffff86d6ba0) at s3_pkt.c:1246 i = 33 sender = 0x4df1efefe0 <Address 0x4df1efefe0 out of bounds> slen = 1495910656 #8 0x00007ffff382889b in ssl3_read_bytes (s=0x7ffff86d6ba0, type=22, buf=0x7ffff86df3c0 "\020", len=4, peek=0) at s3_pkt.c:1110 al = 256134312 i = -1450620668 j = 32767 ret = 1 n = 3664009224 rr = 0x7ffff86d6f88 cb = 0 #9 0x00007ffff3829ad9 in ssl3_get_message (s=0x7ffff86d6ba0, st1=8608, stn=8609, mt=-1, max=514, ok=0x7fffffffde28) at s3_both.c:394 skip_message = 32767 p = 0x7ffff86df3c0 "\020" l = 4167921728 n = 140737251474023 i = 32767 al = -209455920 #10 0x00007ffff381c12b in ssl3_get_cert_verify (s=0x7ffff86d6ba0) at s3_srvr.c:2311 pkey = 0x0 p = 0x7ffff86d6ba0 "\001\003" al = 32767 ok = -127061464 ret = 0 n = 140737361309760 type = 0 i = 32767 j = -127045568 peer = 0x7ffff86d7098 #11 0x00007ffff381895b in ssl3_accept (s=0x7ffff86d6ba0) at s3_srvr.c:506 buf = 0x7ffff86f3b40 l = 109052176 Time = 1279528922 cb = 0x7ffff1162c30 <ssl_callback_Info> num1 = 1 ret = 1 new_state = 8608 state = 8608 skip = 0 #12 0x00007ffff383bf64 in SSL_accept (s=0x7ffff86d6ba0) at ssl_lib.c:869 No locals. #13 0x00007ffff382b199 in ssl23_get_client_hello (s=0x7ffff86d6ba0) at s23_srvr.c:577 buf_space = "\026\003\001\000\235\001\000\000\231\003\001" buf = 0x7fffffffdf50 "\026\003\001" p = 0x7ffff86e4a00 "\024\003\001" d = 0x7ffff1162c62 "H\205\300H\211\303tAH\213-߂!" d_len = 0x7fffffffdfd0 "\360\337\377\377\377\177" dd = 0x7ffff86d6ba0 "\001\003" i = 0 csl = 0 sil = 32767 cl = 4294958976 n = 11 j = -236375477 type = 3 v = {3, 1} #14 0x00007ffff382a479 in ssl23_accept (s=0x7ffff86d6ba0) at s23_srvr.c:203 buf = 0x7ffff86d48b0 Time = 1279528922 cb = 0x7ffff1162c30 <ssl_callback_Info> ret = -1 new_state = 8720 state = 8720 #15 0x00007ffff383bf64 in SSL_accept (s=0x7ffff86d6ba0) at ssl_lib.c:869 No locals. #16 0x00007ffff1160ab8 in ssl_io_filter_connect (filter_ctx=0x7ffff86d3348) at /build/buildd/apache2-2.2.14/modules/ssl/ssl_engine_io.c:1103 c = 0x7ffff86d2a88 sc = <value optimized out> cert = <value optimized out> n = <value optimized out> ssl_err = <value optimized out> verify_result = <value optimized out> server = 0x7ffff83af2f8 #17 0x00007ffff1161a38 in ssl_io_filter_input (f=0x7ffff86dc398, bb=0x7ffff86de9b8, mode=<value optimized out>, block=APR_BLOCK_READ, readbytes=<value optimized out>) at /build/buildd/apache2-2.2.14/modules/ssl/ssl_engine_io.c:1349 status = <value optimized out> len = 8192 #18 0x00007ffff7fc9626 in ap_rgetline_core (s=0x7ffff86dd488, n=<value optimized out>, read=<value optimized out>, r=<value optimized out>, fold=<value optimized out>, bb=<value optimized out>) at /build/buildd/apache2-2.2.14/server/protocol.c:231 rv = <value optimized out> e = 0x7ffff86de9b8 bytes_handled = 0 current_alloc = 0 pos = <value optimized out> last_char = <value optimized out> do_alloc = 1 saw_eos = 0 #19 0x00007ffff7fc9fa6 in read_request_line (conn=0x7ffff86d2a88) at /build/buildd/apache2-2.2.14/server/protocol.c:596 rv = <value optimized out> ll = <value optimized out> pro = <value optimized out> major = 1 minor = 0 http = "\030{ \370\377" len = 140737361291912 num_blank_lines = 0 max_blank_lines = 100 uri = <value optimized out> #20 ap_read_request (conn=0x7ffff86d2a88) at /build/buildd/apache2-2.2.14/server/protocol.c:891 r = 0x7ffff86dd458 p = 0x7ffff86dd3d8 expect = <value optimized out> access_status = <value optimized out> tmp_bb = 0x7ffff86de9b8 csd = <value optimized out> cur_timeout = <value optimized out> #21 0x00007ffff7fe4490 in ap_process_http_connection (c=0x7ffff86d2a88) at /build/buildd/apache2-2.2.14/modules/http/http_core.c:183 r = 0x1 csd = 0x0 #22 0x00007ffff7fddcf8 in ap_run_process_connection (c=0x7ffff86d2a88) at /build/buildd/apache2-2.2.14/server/connection.c:43 n = 1 rv = -127659680 #23 0x00007ffff7fec037 in child_main (child_num_arg=<value optimized out>) at /build/buildd/apache2-2.2.14/server/mpm/prefork/prefork.c:662 current_conn = <value optimized out> csd = 0x7ffff86d2898 ptrans = 0x7ffff86d2818 allocator = 0x7ffff86d0710 status = <value optimized out> i = <value optimized out> lr = <value optimized out> pollset = 0x7ffff86d08b0 sbh = 0x7ffff86d08a8 bucket_alloc = 0x7ffff86d4bb8 last_poll_idx = 1 #24 0x00007ffff7fec306 in make_child (s=0x7ffff8214938, slot=0) at /build/buildd/apache2-2.2.14/server/mpm/prefork/prefork.c:702 No locals. #25 0x00007ffff7fec953 in ap_mpm_run (_pconf=<value optimized out>, plog=<value optimized out>, s=<value optimized out>) at /build/buildd/apache2-2.2.14/server/mpm/prefork/prefork.c:978 index = <value optimized out> remaining_children_to_start = <value optimized out> rv = <value optimized out> #26 0x00007ffff7fc2350 in main (argc=4, argv=0x7fffffffe728) at /build/buildd/apache2-2.2.14/server/main.c:742 c = 88 'X' configtestonly = <value optimized out> confname = 0x7ffff7fee92b "/etc/apache2/apache2.conf" def_server_root = 0x7ffff7ff252b "" temp_error_log = 0x0 error = <value optimized out> process = 0x7ffff820c220 server_conf = 0x7ffff8214938 pglobal = 0x7ffff820c128 pconf = 0x7ffff820e138 plog = 0x7ffff82422d8 ptemp = 0x7ffff8216178 pcommands = 0x7ffff8210148 opt = 0x7ffff8210240 rv = <value optimized out> mod = <value optimized out> optarg = 0x0 (gdb) frame 2 #2 0x00007ffff1e7dc34 in engine_table_select (table=0x7ffff216c860, nid=427) at eng_table.c:274 274 initres = engine_unlocked_init(ret); (gdb) print *table $1 = (ENGINE_TABLE *) 0x7ffff8641230 (gdb) print table $2 = (ENGINE_TABLE **) 0x7ffff216c860 (gdb) print **table $3 = {piles = {b = 0x7ffff861ea70, comp = 0x7ffff1e7d602 <engine_pile_cmp_LHASH_COMP>, hash = 0x7ffff1e7d5e0 <engine_pile_hash_LHASH_HASH>, num_nodes = 8, num_alloc_nodes = 16, p = 0, pmax = 8, up_load = 512, down_load = 256, num_items = 12, num_expands = 0, num_expand_reallocs = 0, num_contracts = 0, num_contract_reallocs = 0, num_hash_calls = 25, num_comp_calls = 1, num_insert = 12, num_replace = 0, num_delete = 0, num_no_delete = 0, num_retrieve = 1, num_retrieve_miss = 12, num_hash_comps = 10, error = 0}} (gdb) list 269 #endif 270 goto end; 271 } 272 /* Try to initialise the ENGINE? */ 273 if((ret->funct_ref > 0) || !(table_flags & ENGINE_TABLE_FLAG_NOINIT)) 274 initres = engine_unlocked_init(ret); 275 else 276 initres = 0; 277 if(initres) 278 { (gdb) print ret $4 = (ENGINE *) 0x7ffff8641160 (gdb) print ret->funct_ref $5 = 0 (gdb) print table_flags $6 = 0 (gdb) print *ret $7 = {id = 0x2 <Address 0x2 out of bounds>, name = 0x7ffff1eff31c "des-cbc", rsa_meth = 0x7ffff214e2c0, dsa_meth = 0x31, dh_meth = 0x7fff00000090, ecdh_meth = 0x7ffff2149d20, ecdsa_meth = 0x7ffff214ea60, rand_meth = 0x7ffff1eec806, store_meth = 0x0, ciphers = 0x31, digests = 0x7fff00000091, destroy = 0x7ffff2149d80 <r4_40_cipher>, init = 0x7ffff214ea60 <sha1_md>, finish = 0x7ffff1eec806 <PKCS12_PBE_keyivgen>, ctrl = 0x7ffff1e80278 <dynamic_ctrl>, load_privkey = 0x31, load_pubkey = 0x7fff00000092, load_ssl_client_cert = 0x7ffff2149ae0 <des_ede3_cbc>, cmd_defns = 0x7ffff214ea60, flags = -236009466, struct_ref = 32767, funct_ref = 0, ex_data = {sk = 0x21, dummy = -146014162}, prev = 0x7ffff74c7ea8, next = 0x20} (gdb) frame 1 #1 0x00007ffff1e7c7cf in engine_unlocked_init (e=0x7ffff8641160) at eng_init.c:67 67 to_return = e->init(e); (gdb) l 62 int to_return = 1; 63 64 if((e->funct_ref == 0) && e->init) 65 /* This is the first functional reference and the engine 66 * requires initialisation so we do it now. */ 67 to_return = e->init(e); 68 if(to_return) 69 { 70 /* OK, we return a functional reference which is also a 71 * structural reference. */ (gdb) print *e $8 = {id = 0x2 <Address 0x2 out of bounds>, name = 0x7ffff1eff31c "des-cbc", rsa_meth = 0x7ffff214e2c0, dsa_meth = 0x31, dh_meth = 0x7fff00000090, ecdh_meth = 0x7ffff2149d20, ecdsa_meth = 0x7ffff214ea60, rand_meth = 0x7ffff1eec806, store_meth = 0x0, ciphers = 0x31, digests = 0x7fff00000091, destroy = 0x7ffff2149d80 <r4_40_cipher>, init = 0x7ffff214ea60 <sha1_md>, finish = 0x7ffff1eec806 <PKCS12_PBE_keyivgen>, ctrl = 0x7ffff1e80278 <dynamic_ctrl>, load_privkey = 0x31, load_pubkey = 0x7fff00000092, load_ssl_client_cert = 0x7ffff2149ae0 <des_ede3_cbc>, cmd_defns = 0x7ffff214ea60, flags = -236009466, struct_ref = 32767, funct_ref = 0, ex_data = {sk = 0x21, dummy = -146014162}, prev = 0x7ffff74c7ea8, next = 0x20} (gdb) print cipher_table $9 = (ENGINE_TABLE *) 0x7ffff8641230 (gdb) print *cipher_table $10 = {piles = {b = 0x7ffff861ea70, comp = 0x7ffff1e7d602 <engine_pile_cmp_LHASH_COMP>, hash = 0x7ffff1e7d5e0 <engine_pile_hash_LHASH_HASH>, num_nodes = 8, num_alloc_nodes = 16, p = 0, pmax = 8, up_load = 512, down_load = 256, num_items = 12, num_expands = 0, num_expand_reallocs = 0, num_contracts = 0, num_contract_reallocs = 0, num_hash_calls = 25, num_comp_calls = 1, num_insert = 12, num_replace = 0, num_delete = 0, num_no_delete = 0, num_retrieve = 1, num_retrieve_miss = 12, num_hash_comps = 10, error = 0}} (gdb) q A debugging session is active. Inferior 1 [process 13389] will be killed. Quit anyway? (y or n)