Date: Mon, 13 Aug 2012 01:13:35 +0200 From: Juergen Lock <nox@jelal.kn-bremen.de> To: Juergen Lock <nox@jelal.kn-bremen.de> Cc: Konstantin Belousov <kostikbel@gmail.com>, current@freebsd.org, freebsd-ports@freebsd.org Subject: Re: Segfault in rtld - dlopen RTLD_LAZY (was: Re: CFT: vlc 2.0.3 - want to know where it works and where only partly) Message-ID: <20120812231335.GA35313@triton8.kn-bremen.de> In-Reply-To: <20120805173811.GA91260@triton8.kn-bremen.de> References: <201208021921.q72JLT4k040018@triton8.kn-bremen.de> <1361725.y2QOXzX10J@pcoliver.heesakkers.info> <20120802205625.GA43980@triton8.kn-bremen.de> <20120803142711.1cb981b3@ernst.jennejohn.org> <501BE795.8070407@gwdg.de> <20120803163633.GA2046@triton8.kn-bremen.de> <20120804110952.4f3a9cfd@ernst.jennejohn.org> <201208051531.q75FVJjO087729@triton8.kn-bremen.de> <20120805161353.GF2676@deviant.kiev.zoral.com.ua> <20120805173811.GA91260@triton8.kn-bremen.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Aug 05, 2012 at 07:38:11PM +0200, Juergen Lock wrote: > On Sun, Aug 05, 2012 at 07:13:53PM +0300, Konstantin Belousov wrote: > > On Sun, Aug 05, 2012 at 05:31:19PM +0200, Juergen Lock wrote: > > > Hi kib, -current, seems we have a segfault in rtld when updating > > > the multimedia/vlc port from the version currently in ports to the > > > 2.0.3 CFT version from here: > > > > > > http://people.freebsd.org/~nox/tmp/vlc-2.0.3-006.patch > > > > > > (If you test the LIVEMEDIA knob you also need this update: > > > > > > http://people.freebsd.org/~nox/tmp/livemedia-20120404-001.patch > > > > > > ) > > Please do two things. > > > > 1. Provide me the output of readelf -a for the module that was loaded. > > > > 2. Recompile rtld with debug symbols and redo the build to get the useful > > backtrace from core: > > cd /usr/src/libexec/rtld-elf > > make clean > > make all install DEBUG_FLAGS=-g > > > Ok, someone who got the crash will have to do this as I couln't > reproduce it here (sorry forgot to say...) > I just learned that the missing piece in reproducing this is the pulseaudio knob, now I finally have a bt: [...] Loaded symbols for /libexec/ld-elf.so.1 #0 symlook_obj (req=0x7fffffffbf40, obj=0x800640400) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:3847 3847 for (symnum = obj->buckets[req->hash % obj->nbuckets]; [New Thread 802406400 (LWP 100159/vlc-cache-gen)] (gdb) bt #0 symlook_obj (req=0x7fffffffbf40, obj=0x800640400) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:3847 #1 0x0000000800608ae7 in symlook_list (req=0x7fffffffc120, objlist=Variable "objlist" is not available. ) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:3611 #2 0x000000080060911b in symlook_default (req=0x7fffffffc1c0, refobj=Variable "refobj" is not available. ) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:3569 #3 0x000000080060939d in find_symdef (symnum=15, refobj=0x8006fd000, defobj_out=0x7fffffffc260, flags=0, cache=0x80061d000, lockstate=0x7fffffffc300) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:1541 #4 0x0000000800603690 in reloc_non_plt (obj=0x8006fd000, obj_rtld=Variable "obj_rtld" is not available. ) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/amd64/reloc.c:204 #5 0x0000000800606ae8 in relocate_object (obj=0x8006fd000, bind_now=0 '\0', rtldobj=0x800819d00, flags=0, lockstate=0x7fffffffc300) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:2433 #6 0x00000008006084a8 in dlopen_object (name=0x80243ec80 "../modules/access/.libs/libpulsesrc_plugin.so", fd=Variable "fd" is not available. ) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:2392 #7 0x0000000800608f67 in rtld_dlopen (name=0x80243ec80 "../modules/access/.libs/libpulsesrc_plugin.so", fd=-1, mode=1) at /d3t/d3t/home/nox/src10b/src/libexec/rtld-elf/rtld.c:2761 #8 0x0000000800ad377d in vlc_timer_create () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs/libvlccore.so.6 #9 0x0000000800ab9998 in module_gettext () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs/libvlccore.so.6 #10 0x0000000800aba0aa in module_list_get () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs/libvlccore.so.6 #11 0x0000000800ab9db1 in module_list_get () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs/libvlccore.so.6 #12 0x0000000800ab9db1 in module_list_get () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs/libvlccore.so.6 #13 0x0000000800aba17d in module_list_get () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs/libvlccore.so.6 #14 0x0000000800aba631 in module_list_get () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs/libvlccore.so.6 #15 0x0000000800a52573 in libvlc_InternalInit () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs/libvlccore.so.6 #16 0x00000008008227a7 in libvlc_new () from /usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/lib/.libs/libvlc.so.8 #17 0x0000000000400cd4 in main () (gdb) p obj->buckets $1 = (const Elf_Hashelt *) 0x804de0160 (gdb) p req->hash % obj->nbuckets $2 = 399 (gdb) p obj->buckets[req->hash % obj->nbuckets] Cannot access memory at address 0x804de079c (gdb) p obj->nbuckets $3 = 521 (gdb) l 2761 return (dlopen_object(name, fd, obj_main, lo_flags, 2762 mode & (RTLD_MODEMASK | RTLD_GLOBAL), NULL)); 2763 } 2764 2765 static void 2766 dlopen_cleanup(Obj_Entry *obj) 2767 { 2768 2769 obj->dl_refcount--; 2770 unref_dag(obj); (gdb) l 3840 3835 * performed with the obj->valid_hash_sysv assignment. 3836 */ 3837 static int 3838 symlook_obj1_sysv(SymLook *req, const Obj_Entry *obj) 3839 { 3840 unsigned long symnum; 3841 Sym_Match_Result matchres; 3842 3843 matchres.sym_out = NULL; 3844 matchres.vsymp = NULL; (gdb) l 3845 matchres.vcount = 0; 3846 3847 for (symnum = obj->buckets[req->hash % obj->nbuckets]; 3848 symnum != STN_UNDEF; symnum = obj->chains[symnum]) { 3849 if (symnum >= obj->nchains) 3850 return (ESRCH); /* Bad object */ 3851 3852 if (matched_symbol(req, obj, &matchres, symnum)) { 3853 req->sym_out = matchres.sym_out; 3854 req->defobj_out = obj; (gdb) q % readelf -a work/vlc-2.0.3/modules/access/.libs/libpulsesrc_plugin.so ELF Header: Magic: 7f 45 4c 46 02 01 01 09 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - FreeBSD ABI Version: 0 Type: DYN (Shared object file) Machine: Advanced Micro Devices X86-64 Version: 0x1 Entry point address: 0x2110 Start of program headers: 64 (bytes into file) Start of section headers: 18600 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 5 Size of section headers: 64 (bytes) Number of section headers: 28 Section header string table index: 25 Section Headers: [Nr] Name Type Address Offset Size EntSize Flags Link Info Align [ 0] NULL 0000000000000000 00000000 0000000000000000 0000000000000000 0 0 0 [ 1] .hash HASH 0000000000000158 00000158 0000000000000268 0000000000000004 A 3 0 8 [ 2] .gnu.hash GNU_HASH 00000000000003c0 000003c0 0000000000000060 0000000000000000 A 3 0 8 [ 3] .dynsym DYNSYM 0000000000000420 00000420 00000000000007f8 0000000000000018 A 4 2 8 [ 4] .dynstr STRTAB 0000000000000c18 00000c18 000000000000085e 0000000000000000 A 0 0 1 [ 5] .gnu.version VERSYM 0000000000001476 00001476 00000000000000aa 0000000000000002 A 3 0 2 [ 6] .gnu.version_r VERNEED 0000000000001520 00001520 0000000000000020 0000000000000000 A 4 1 8 [ 7] .rela.dyn RELA 0000000000001540 00001540 0000000000000060 0000000000000018 A 3 0 8 [ 8] .rela.plt RELA 00000000000015a0 000015a0 00000000000006c0 0000000000000018 A 3 10 8 [ 9] .init PROGBITS 0000000000001c60 00001c60 0000000000000013 0000000000000000 AX 0 0 4 [10] .plt PROGBITS 0000000000001c74 00001c74 0000000000000490 0000000000000010 AX 0 0 4 [11] .text PROGBITS 0000000000002110 00002110 0000000000001238 0000000000000000 AX 0 0 16 [12] .fini PROGBITS 0000000000003348 00003348 000000000000000e 0000000000000000 AX 0 0 4 [13] .rodata PROGBITS 0000000000003360 00003360 00000000000004b4 0000000000000000 A 0 0 32 [14] .eh_frame_hdr PROGBITS 0000000000003814 00003814 00000000000000bc 0000000000000000 A 0 0 4 [15] .eh_frame PROGBITS 00000000000038d0 000038d0 0000000000000294 0000000000000000 A 0 0 8 [16] .ctors PROGBITS 0000000000204000 00004000 0000000000000010 0000000000000000 WA 0 0 8 [17] .dtors PROGBITS 0000000000204010 00004010 0000000000000010 0000000000000000 WA 0 0 8 [18] .jcr PROGBITS 0000000000204020 00004020 0000000000000008 0000000000000000 WA 0 0 8 [19] .dynamic DYNAMIC 0000000000204028 00004028 0000000000000390 0000000000000010 WA 4 0 8 [20] .got PROGBITS 00000000002043b8 000043b8 0000000000000010 0000000000000008 WA 0 0 8 [21] .got.plt PROGBITS 00000000002043c8 000043c8 0000000000000258 0000000000000008 WA 0 0 8 [22] .data PROGBITS 0000000000204620 00004620 0000000000000010 0000000000000000 WA 0 0 8 [23] .bss NOBITS 0000000000204630 00004630 0000000000000008 0000000000000000 WA 0 0 4 [24] .comment PROGBITS 0000000000000000 00004630 000000000000019e 0000000000000000 0 0 1 [25] .shstrtab STRTAB 0000000000000000 000047ce 00000000000000d5 0000000000000000 0 0 1 [26] .symtab SYMTAB 0000000000000000 00004fa8 00000000000002a0 0000000000000018 27 25 8 [27] .strtab STRTAB 0000000000000000 00005248 0000000000000049 0000000000000000 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) There are no section groups in this file. Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flags Align LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000003b64 0x0000000000003b64 R E 200000 LOAD 0x0000000000004000 0x0000000000204000 0x0000000000204000 0x0000000000000630 0x0000000000000638 RW 200000 DYNAMIC 0x0000000000004028 0x0000000000204028 0x0000000000204028 0x0000000000000390 0x0000000000000390 RW 8 GNU_EH_FRAME 0x0000000000003814 0x0000000000003814 0x0000000000003814 0x00000000000000bc 0x00000000000000bc R 4 GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 RW 8 Section to Segment mapping: Segment Sections... 00 .hash .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame 01 .ctors .dtors .jcr .dynamic .got .got.plt .data .bss 02 .dynamic 03 .eh_frame_hdr 04 Dynamic section at offset 0x4028 contains 53 entries: Tag Type Name/Value 0x0000000000000001 (NEEDED) Shared library: [libvlccore.so.6] 0x0000000000000001 (NEEDED) Shared library: [libthr.so.3] 0x0000000000000001 (NEEDED) Shared library: [libpulse.so.0] 0x0000000000000001 (NEEDED) Shared library: [libpulsecommon-0.9.23.so] 0x0000000000000001 (NEEDED) Shared library: [libX11-xcb.so.1] 0x0000000000000001 (NEEDED) Shared library: [libSM.so.6] 0x0000000000000001 (NEEDED) Shared library: [libICE.so.6] 0x0000000000000001 (NEEDED) Shared library: [libXtst.so.6] 0x0000000000000001 (NEEDED) Shared library: [libXi.so.6] 0x0000000000000001 (NEEDED) Shared library: [libXext.so.6] 0x0000000000000001 (NEEDED) Shared library: [libX11.so.6] 0x0000000000000001 (NEEDED) Shared library: [libxcb.so.2] 0x0000000000000001 (NEEDED) Shared library: [libXau.so.6] 0x0000000000000001 (NEEDED) Shared library: [libXdmcp.so.6] 0x0000000000000001 (NEEDED) Shared library: [libpthread-stubs.so.0] 0x0000000000000001 (NEEDED) Shared library: [librpcsvc.so.5] 0x0000000000000001 (NEEDED) Shared library: [libwrap.so.6] 0x0000000000000001 (NEEDED) Shared library: [libsndfile.so.1] 0x0000000000000001 (NEEDED) Shared library: [libFLAC.so.10] 0x0000000000000001 (NEEDED) Shared library: [libvorbisenc.so.2] 0x0000000000000001 (NEEDED) Shared library: [libvorbis.so.4] 0x0000000000000001 (NEEDED) Shared library: [libogg.so.8] 0x0000000000000001 (NEEDED) Shared library: [libdbus-1.so.3] 0x0000000000000001 (NEEDED) Shared library: [libgdbm.so.4] 0x0000000000000001 (NEEDED) Shared library: [libexecinfo.so.1] 0x0000000000000001 (NEEDED) Shared library: [librt.so.1] 0x0000000000000001 (NEEDED) Shared library: [libm.so.5] 0x0000000000000001 (NEEDED) Shared library: [libintl.so.9] 0x0000000000000001 (NEEDED) Shared library: [libiconv.so.3] 0x0000000000000001 (NEEDED) Shared library: [libc.so.7] 0x000000000000000e (SONAME) Library soname: [libpulsesrc_plugin.so] 0x000000000000000f (RPATH) Library rpath: [/usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs:/usr/local/lib] 0x000000000000001d (RUNPATH) Library runpath: [/usr/ports/multimedia/vlc-203a/work/vlc-2.0.3/src/.libs:/usr/local/lib] 0x000000000000000c (INIT) 0x1c60 0x000000000000000d (FINI) 0x3348 0x0000000000000004 (HASH) 0x158 0x000000006ffffef5 (GNU_HASH) 0x3c0 0x0000000000000005 (STRTAB) 0xc18 0x0000000000000006 (SYMTAB) 0x420 0x000000000000000a (STRSZ) 2142 (bytes) 0x000000000000000b (SYMENT) 24 (bytes) 0x0000000000000003 (PLTGOT) 0x2043c8 0x0000000000000002 (PLTRELSZ) 1728 (bytes) 0x0000000000000014 (PLTREL) RELA 0x0000000000000017 (JMPREL) 0x15a0 0x0000000000000007 (RELA) 0x1540 0x0000000000000008 (RELASZ) 96 (bytes) 0x0000000000000009 (RELAENT) 24 (bytes) 0x000000006ffffffe (VERNEED) 0x1520 0x000000006fffffff (VERNEEDNUM) 1 0x000000006ffffff0 (VERSYM) 0x1476 0x000000006ffffff9 (RELACOUNT) 2 0x0000000000000000 (NULL) 0x0 Relocation section '.rela.dyn' at offset 0x1540 contains 4 entries: Offset Info Type Sym. Value Sym. Name + Addend 000000204620 000000000008 R_X86_64_RELATIVE 0000000000204620 000000204628 000000000008 R_X86_64_RELATIVE 0000000000204018 0000002043b8 000800000006 R_X86_64_GLOB_DAT 0000000000000000 __cxa_finalize + 0 0000002043c0 000f00000006 R_X86_64_GLOB_DAT 0000000000000000 _Jv_RegisterClasses + 0 Relocation section '.rela.plt' at offset 0x15a0 contains 72 entries: Offset Info Type Sym. Value Sym. Name + Addend 0000002043e0 000200000007 R_X86_64_JUMP_SLO 0000000000000000 malloc + 0 0000002043e8 000300000007 R_X86_64_JUMP_SLO 0000000000000000 sysconf + 0 0000002043f0 000400000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_unref + 0 0000002043f8 000500000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_drop + 0 000000204400 000600000007 R_X86_64_JUMP_SLO 0000000000000000 pa_strerror + 0 000000204408 000700000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_get_state + 0 000000204410 000800000007 R_X86_64_JUMP_SLO 0000000000000000 __cxa_finalize + 0 000000204418 000900000007 R_X86_64_JUMP_SLO 0000000000000000 pa_proplist_setf + 0 000000204420 004900000007 R_X86_64_JUMP_SLO 00000000000021b0 vlc_pa_disconnect + 0 000000204428 000a00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_overflow + 0 000000204430 000b00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_get_state + 0 000000204438 000c00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_proplist_free + 0 000000204440 000d00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_get_server + 0 000000204448 000e00000007 R_X86_64_JUMP_SLO 0000000000000000 var_Inherit + 0 000000204450 001000000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_s + 0 000000204458 001100000007 R_X86_64_JUMP_SLO 0000000000000000 getpwuid_r + 0 000000204460 001200000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_get_buffer_a + 0 000000204468 001300000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_peek + 0 000000204470 001400000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_started_ + 0 000000204478 001500000007 R_X86_64_JUMP_SLO 0000000000000000 vlc_memcpy + 0 000000204480 001600000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_w + 0 000000204488 001700000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_u + 0 000000204490 001800000007 R_X86_64_JUMP_SLO 0000000000000000 aout_BitsPerSample + 0 000000204498 001900000007 R_X86_64_JUMP_SLO 0000000000000000 pa_usec_to_bytes + 0 0000002044a0 001a00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_s + 0 0000002044a8 001b00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_get_sample_s + 0 0000002044b0 001c00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_disconnect + 0 0000002044b8 001d00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_s + 0 0000002044c0 001e00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_underflo + 0 0000002044c8 001f00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_get_index + 0 0000002044d0 002000000007 R_X86_64_JUMP_SLO 0000000000000000 gethostname + 0 0000002044d8 002100000007 R_X86_64_JUMP_SLO 0000000000000000 pa_proplist_sets + 0 0000002044e0 002200000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_g + 0 0000002044e8 002300000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_get_latency + 0 0000002044f0 002400000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_set_state_c + 0 0000002044f8 002500000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_suspende + 0 000000204500 002600000007 R_X86_64_JUMP_SLO 0000000000000000 mdate + 0 000000204508 002700000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_get_server_ + 0 000000204510 002800000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_moved_ca + 0 000000204518 002900000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_connect_reco + 0 000000204520 002a00000007 R_X86_64_JUMP_SLO 0000000000000000 getuid + 0 000000204528 002b00000007 R_X86_64_JUMP_SLO 0000000000000000 block_Alloc + 0 000000204530 002c00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_f + 0 000000204538 002d00000007 R_X86_64_JUMP_SLO 0000000000000000 vlc_Log + 0 000000204540 002e00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_errno + 0 000000204548 002f00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_get_library_version + 0 000000204550 003000000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_unref + 0 000000204558 003100000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_buffer_a + 0 000000204560 003200000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_get_device_n + 0 000000204568 003300000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_n + 0 000000204570 005400000007 R_X86_64_JUMP_SLO 0000000000002240 vlc_pa_error + 0 000000204578 003400000007 R_X86_64_JUMP_SLO 0000000000000000 setlocale + 0 000000204580 003500000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_is_local + 0 000000204588 003600000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_connect + 0 000000204590 003700000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_read_cal + 0 000000204598 003800000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_get_protoco + 0 0000002045a0 003900000007 R_X86_64_JUMP_SLO 0000000000000000 getpid + 0 0000002045a8 003a00000007 R_X86_64_JUMP_SLO 0000000000000000 getenv + 0 0000002045b0 003b00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_get_device_i + 0 0000002045b8 003c00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_operation_unref + 0 0000002045c0 003d00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_context_new_with_pr + 0 0000002045c8 003e00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_operation_get_state + 0 0000002045d0 003f00000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_get_time + 0 0000002045d8 004000000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_state_ca + 0 0000002045e0 004c00000007 R_X86_64_JUMP_SLO 0000000000002330 vlc_pa_connect + 0 0000002045e8 004100000007 R_X86_64_JUMP_SLO 0000000000000000 free + 0 0000002045f0 004200000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_set_buffer_a + 0 0000002045f8 004300000007 R_X86_64_JUMP_SLO 0000000000000000 pa_proplist_new + 0 000000204600 004400000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_new + 0 000000204608 004500000007 R_X86_64_JUMP_SLO 0000000000000000 pa_stream_disconnect + 0 000000204610 004600000007 R_X86_64_JUMP_SLO 0000000000000000 pa_threaded_mainloop_l + 0 000000204618 004700000007 R_X86_64_JUMP_SLO 0000000000000000 es_format_Init + 0 There are no unwind sections in this file. Symbol table '.dynsym' contains 85 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000001c60 0 SECTION LOCAL DEFAULT 9 2: 0000000000000000 241 FUNC GLOBAL DEFAULT UND malloc@FBSD_1.0 (2) 3: 0000000000000000 1333 FUNC GLOBAL DEFAULT UND sysconf@FBSD_1.0 (2) 4: 0000000000000000 189 FUNC GLOBAL DEFAULT UND pa_context_unref 5: 0000000000000000 425 FUNC GLOBAL DEFAULT UND pa_stream_drop 6: 0000000000000000 59 FUNC GLOBAL DEFAULT UND pa_strerror 7: 0000000000000000 169 FUNC GLOBAL DEFAULT UND pa_context_get_state 8: 0000000000000000 497 FUNC WEAK DEFAULT UND __cxa_finalize@FBSD_1.0 (2) 9: 0000000000000000 623 FUNC GLOBAL DEFAULT UND pa_proplist_setf 10: 0000000000000000 230 FUNC GLOBAL DEFAULT UND pa_stream_set_overflow_ca 11: 0000000000000000 169 FUNC GLOBAL DEFAULT UND pa_stream_get_state 12: 0000000000000000 109 FUNC GLOBAL DEFAULT UND pa_proplist_free 13: 0000000000000000 266 FUNC GLOBAL DEFAULT UND pa_context_get_server 14: 0000000000000000 285 FUNC GLOBAL DEFAULT UND var_Inherit 15: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses 16: 0000000000000000 151 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_sign 17: 0000000000000000 175 FUNC GLOBAL DEFAULT UND getpwuid_r@FBSD_1.0 (2) 18: 0000000000000000 237 FUNC GLOBAL DEFAULT UND pa_stream_get_buffer_attr 19: 0000000000000000 580 FUNC GLOBAL DEFAULT UND pa_stream_peek 20: 0000000000000000 230 FUNC GLOBAL DEFAULT UND pa_stream_set_started_cal 21: 0000000000000000 10 FUNC GLOBAL DEFAULT UND vlc_memcpy 22: 0000000000000000 289 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_wait 23: 0000000000000000 192 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_unlo 24: 0000000000000000 373 FUNC GLOBAL DEFAULT UND aout_BitsPerSample 25: 0000000000000000 246 FUNC GLOBAL DEFAULT UND pa_usec_to_bytes 26: 0000000000000000 225 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_stop 27: 0000000000000000 189 FUNC GLOBAL DEFAULT UND pa_stream_get_sample_spec 28: 0000000000000000 199 FUNC GLOBAL DEFAULT UND pa_context_disconnect 29: 0000000000000000 209 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_star 30: 0000000000000000 230 FUNC GLOBAL DEFAULT UND pa_stream_set_underflow_c 31: 0000000000000000 259 FUNC GLOBAL DEFAULT UND pa_context_get_index 32: 0000000000000000 102 FUNC GLOBAL DEFAULT UND gethostname@FBSD_1.0 (2) 33: 0000000000000000 448 FUNC GLOBAL DEFAULT UND pa_proplist_sets 34: 0000000000000000 93 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_get_ 35: 0000000000000000 551 FUNC GLOBAL DEFAULT UND pa_stream_get_latency 36: 0000000000000000 223 FUNC GLOBAL DEFAULT UND pa_context_set_state_call 37: 0000000000000000 230 FUNC GLOBAL DEFAULT UND pa_stream_set_suspended_c 38: 0000000000000000 94 FUNC GLOBAL DEFAULT UND mdate 39: 0000000000000000 232 FUNC GLOBAL DEFAULT UND pa_context_get_server_pro 40: 0000000000000000 230 FUNC GLOBAL DEFAULT UND pa_stream_set_moved_callb 41: 0000000000000000 199 FUNC GLOBAL DEFAULT UND pa_stream_connect_record 42: 0000000000000000 0 FUNC GLOBAL DEFAULT UND getuid@FBSD_1.0 (2) 43: 0000000000000000 132 FUNC GLOBAL DEFAULT UND block_Alloc 44: 0000000000000000 256 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_free 45: 0000000000000000 132 FUNC GLOBAL DEFAULT UND vlc_Log 46: 0000000000000000 102 FUNC GLOBAL DEFAULT UND pa_context_errno 47: 0000000000000000 8 FUNC GLOBAL DEFAULT UND pa_get_library_version 48: 0000000000000000 330 FUNC GLOBAL DEFAULT UND pa_stream_unref 49: 0000000000000000 230 FUNC GLOBAL DEFAULT UND pa_stream_set_buffer_attr 50: 0000000000000000 284 FUNC GLOBAL DEFAULT UND pa_stream_get_device_name 51: 0000000000000000 127 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_new 52: 0000000000000000 904 FUNC GLOBAL DEFAULT UND setlocale@FBSD_1.0 (2) 53: 0000000000000000 235 FUNC GLOBAL DEFAULT UND pa_context_is_local 54: 0000000000000000 881 FUNC GLOBAL DEFAULT UND pa_context_connect 55: 0000000000000000 230 FUNC GLOBAL DEFAULT UND pa_stream_set_read_callba 56: 0000000000000000 6 FUNC GLOBAL DEFAULT UND pa_context_get_protocol_v 57: 0000000000000000 0 FUNC GLOBAL DEFAULT UND getpid@FBSD_1.0 (2) 58: 0000000000000000 389 FUNC GLOBAL DEFAULT UND getenv@FBSD_1.0 (2) 59: 0000000000000000 293 FUNC GLOBAL DEFAULT UND pa_stream_get_device_inde 60: 0000000000000000 378 FUNC GLOBAL DEFAULT UND pa_operation_unref 61: 0000000000000000 527 FUNC GLOBAL DEFAULT UND pa_context_new_with_propl 62: 0000000000000000 169 FUNC GLOBAL DEFAULT UND pa_operation_get_state 63: 0000000000000000 430 FUNC GLOBAL DEFAULT UND pa_stream_get_time 64: 0000000000000000 230 FUNC GLOBAL DEFAULT UND pa_stream_set_state_callb 65: 0000000000000000 172 FUNC GLOBAL DEFAULT UND free@FBSD_1.0 (2) 66: 0000000000000000 744 FUNC GLOBAL DEFAULT UND pa_stream_set_buffer_attr 67: 0000000000000000 19 FUNC GLOBAL DEFAULT UND pa_proplist_new 68: 0000000000000000 8 FUNC GLOBAL DEFAULT UND pa_stream_new 69: 0000000000000000 397 FUNC GLOBAL DEFAULT UND pa_stream_disconnect 70: 0000000000000000 192 FUNC GLOBAL DEFAULT UND pa_threaded_mainloop_lock 71: 0000000000000000 234 FUNC GLOBAL DEFAULT UND es_format_Init 72: 0000000000002190 20 FUNC GLOBAL DEFAULT 11 vlc_pa_rttime_free 73: 00000000000021b0 94 FUNC GLOBAL DEFAULT 11 vlc_pa_disconnect 74: 0000000000204638 0 NOTYPE GLOBAL DEFAULT ABS _end 75: 00000000000022a0 133 FUNC GLOBAL DEFAULT 11 vlc_pa_get_latency 76: 0000000000002330 1110 FUNC GLOBAL DEFAULT 11 vlc_pa_connect 77: 0000000000204630 0 NOTYPE GLOBAL DEFAULT ABS _edata 78: 0000000000002990 8 FUNC GLOBAL DEFAULT 11 vlc_entry_license__1_2_0l 79: 0000000000204630 0 NOTYPE GLOBAL DEFAULT ABS __bss_start 80: 0000000000001c60 0 FUNC GLOBAL DEFAULT 9 _init 81: 0000000000003348 0 FUNC GLOBAL DEFAULT 12 _fini 82: 0000000000002790 486 FUNC GLOBAL DEFAULT 11 vlc_entry__1_2_0l 83: 0000000000002980 8 FUNC GLOBAL DEFAULT 11 vlc_entry_copyright__1_2_ 84: 0000000000002240 84 FUNC GLOBAL DEFAULT 11 vlc_pa_error Symbol table '.symtab' contains 28 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000000158 0 SECTION LOCAL DEFAULT 1 2: 00000000000003c0 0 SECTION LOCAL DEFAULT 2 3: 0000000000000420 0 SECTION LOCAL DEFAULT 3 4: 0000000000000c18 0 SECTION LOCAL DEFAULT 4 5: 0000000000001476 0 SECTION LOCAL DEFAULT 5 6: 0000000000001520 0 SECTION LOCAL DEFAULT 6 7: 0000000000001540 0 SECTION LOCAL DEFAULT 7 8: 00000000000015a0 0 SECTION LOCAL DEFAULT 8 9: 0000000000001c60 0 SECTION LOCAL DEFAULT 9 10: 0000000000001c74 0 SECTION LOCAL DEFAULT 10 11: 0000000000002110 0 SECTION LOCAL DEFAULT 11 12: 0000000000003348 0 SECTION LOCAL DEFAULT 12 13: 0000000000003360 0 SECTION LOCAL DEFAULT 13 14: 0000000000003814 0 SECTION LOCAL DEFAULT 14 15: 00000000000038d0 0 SECTION LOCAL DEFAULT 15 16: 0000000000204000 0 SECTION LOCAL DEFAULT 16 17: 0000000000204010 0 SECTION LOCAL DEFAULT 17 18: 0000000000204020 0 SECTION LOCAL DEFAULT 18 19: 0000000000204028 0 SECTION LOCAL DEFAULT 19 20: 00000000002043b8 0 SECTION LOCAL DEFAULT 20 21: 00000000002043c8 0 SECTION LOCAL DEFAULT 21 22: 0000000000204620 0 SECTION LOCAL DEFAULT 22 23: 0000000000204630 0 SECTION LOCAL DEFAULT 23 24: 0000000000000000 0 SECTION LOCAL DEFAULT 24 25: 0000000000002790 486 FUNC GLOBAL DEFAULT 11 vlc_entry__1_2_0l 26: 0000000000002990 8 FUNC GLOBAL DEFAULT 11 vlc_entry_license__1_2_0l 27: 0000000000002980 8 FUNC GLOBAL DEFAULT 11 vlc_entry_copyright__1_2_ Histogram for bucket list length (total of 67 buckets): Length Number % of total Coverage 0 18 ( 26.9%) 1 27 ( 40.3%) 32.5% 2 15 ( 22.4%) 68.7% 3 4 ( 6.0%) 83.1% 4 1 ( 1.5%) 88.0% 5 2 ( 3.0%) 100.0% Histogram for `.gnu.hash' bucket list length (total of 3 buckets): Length Number % of total Coverage 0 0 ( 0.0%) 1 0 ( 0.0%) 0.0% 2 0 ( 0.0%) 0.0% 3 1 ( 33.3%) 23.1% 4 1 ( 33.3%) 53.8% 5 0 ( 0.0%) 53.8% 6 1 ( 33.3%) 100.0% Version symbols section '.gnu.version' contains 85 entries: Addr: 0000000000001476 Offset: 0x001476 Link: 3 (.dynsym) 000: 0 (*local*) 0 (*local*) 2 (FBSD_1.0) 2 (FBSD_1.0) 004: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 008: 2 (FBSD_1.0) 0 (*local*) 0 (*local*) 0 (*local*) 00c: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 010: 0 (*local*) 2 (FBSD_1.0) 0 (*local*) 0 (*local*) 014: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 018: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 01c: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 020: 2 (FBSD_1.0) 0 (*local*) 0 (*local*) 0 (*local*) 024: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 028: 0 (*local*) 0 (*local*) 2 (FBSD_1.0) 0 (*local*) 02c: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 030: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 034: 2 (FBSD_1.0) 0 (*local*) 0 (*local*) 0 (*local*) 038: 0 (*local*) 2 (FBSD_1.0) 2 (FBSD_1.0) 0 (*local*) 03c: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 040: 0 (*local*) 2 (FBSD_1.0) 0 (*local*) 0 (*local*) 044: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*) 048: 1 (*global*) 1 (*global*) 1 (*global*) 1 (*global*) 04c: 1 (*global*) 1 (*global*) 1 (*global*) 1 (*global*) 050: 1 (*global*) 1 (*global*) 1 (*global*) 1 (*global*) 054: 1 (*global*) Version needs section '.gnu.version_r' contains 1 entries: Addr: 0x0000000000001520 Offset: 0x001520 Link to section: 4 (.dynstr) 000000: Version: 1 File: libc.so.7 Cnt: 1 0x0010: Name: FBSD_1.0 Flags: none Version: 2 > Thanx, :) > Juergen Thanx once more... :) Juergen > > > > > > In article <20120804110952.4f3a9cfd@ernst.jennejohn.org> you write: > > > >On Fri, 3 Aug 2012 18:36:33 +0200 > > > >Juergen Lock <nox@jelal.kn-bremen.de> wrote: > > > > > > > >> On Fri, Aug 03, 2012 at 05:00:37PM +0200, Rainer Hurling wrote: > > > >> > On 03.08.2012 14:27 (UTC+2), Gary Jennejohn wrote: > > > >> > > On Thu, 2 Aug 2012 22:56:26 +0200 > > > >> > > Juergen Lock <nox@jelal.kn-bremen.de> wrote: > > > >> > > > > > >> > > [trimmed irrelevant content] > > > >> > >> Ok I added that check: > > > >> > >> > > > >> > >> http://people.freebsd.org/~nox/tmp/vlc-2.0.3-005.patch > > > >> > >> > > > >> > >> Enjoy, :) > > > >> > >> > > > >> > > > > > >> > > AMD64 on HEAD. > > > >> > > > > > >> > > I always get this error, no matter which patch I use: > > > >> > > > > > >> > > GEN ../modules/plugins.dat > > > >> > > gmake[2]: *** [../modules/plugins.dat] Segmentation fault: 11 (core dumped) > > > >> > > gmake[2]: Leaving directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3/bin' > > > >> > > gmake[1]: *** [all-recursive] Error 1 > > > >> > > gmake[1]: Leaving directory `/usr/ports/multimedia/vlc/work/vlc-2.0.3' > > > >> > > gmake: *** [all] Error 2 > > > >> > > *** [do-build] Error code 1 > > > >> > > > > >> > I get exactly the same error with CURRENT amd64. > > > >> > > > > >> Hm how old are both your installed src and ports? You two are the > > > >> first to report this and I just tried to reproduce it on a head > > > >> checkout from May 13 and ports from June 18, and couldn't. > > > >> > > > > > > > >I update the ports and source trees almost every day. I do not install > > > >new ports binaries unless absolutely necessary, so the ports binaries > > > >are pretty much rather old. > > > > > > > >Just installed a new world/kernel today (updated yesterdya), r239006. > > > > > > > >> > BTW, mplayer from ports does not build with liveMedia-20120404 ... > > > >> > > > > >> > > Stop in /usr/ports/multimedia/vlc. > > > >> > > *** [build] Error code 1 > > > >> > > > > > >> > > and there's a work/vlc-2.0.3/bin/vlc-cache-gen.core generated. > > > >> > > > > > >> > > May be because I have a mix of old and new dependencies, although the vlc > > > >> > > port never tries to update any of them. > > > >> > > > > > >> Well ports never update dependencies themselves, you need to use > > > >> tools like portmaster for that. > > > >> > > > > > > > >I avoid using tools whenever possible. Maybe I will have to try > > > >portmaster, but I dread seeing 50 ports updated just because I > > > >want to update one port. > > > > > > > >I turned on -g in make.conf and ran vlc-cache-gen in gdb. Here's the > > > >result. > > > > > > > >gdb /usr/ports/multimedia/vlc/work/vlc-2.0.3/bin/.libs/vlc-cache-gen > > > >GNU gdb 6.1.1 [FreeBSD] > > > >Copyright 2004 Free Software Foundation, Inc. > > > >GDB is free software, covered by the GNU General Public License, and you are > > > >welcome to change it and/or distribute copies of it under certain conditions. > > > >Type "show copying" to see the conditions. > > > >There is absolutely no warranty for GDB. Type "show warranty" for details. > > > >This GDB was configured as "amd64-marcel-freebsd"... > > > >(gdb) r ../modules/ > > > >Starting program: /usr/ports/multimedia/vlc/work/vlc-2.0.3/bin/.libs/vlc-cache-gen ../modules/ > > > >[New LWP 100125] > > > >[New Thread 802406400 (LWP 100125/vlc-cache-gen)] > > > > > > > >Program received signal SIGSEGV, Segmentation fault. > > > >[Switching to Thread 802406400 (LWP 100125/vlc-cache-gen)] > > > >0x0000000800606588 in matched_symbol () from /libexec/ld-elf.so.1 > > > >(gdb) bt > > > >#0 0x0000000800606588 in matched_symbol () from /libexec/ld-elf.so.1 > > > >#1 0x00000008006087e4 in symlook_obj () from /libexec/ld-elf.so.1 > > > >#2 0x0000000800608ae7 in symlook_list () from /libexec/ld-elf.so.1 > > > >#3 0x000000080060911b in symlook_default () from /libexec/ld-elf.so.1 > > > >#4 0x000000080060939d in find_symdef () from /libexec/ld-elf.so.1 > > > >#5 0x000000080060375b in reloc_non_plt () from /libexec/ld-elf.so.1 > > > >#6 0x0000000800606ae8 in relocate_object () from /libexec/ld-elf.so.1 > > > >#7 0x00000008006084a8 in dlopen_object () from /libexec/ld-elf.so.1 > > > >#8 0x0000000800608f67 in rtld_dlopen () from /libexec/ld-elf.so.1 > > > >#9 0x0000000800affe95 in module_Load (p_this=0x80244c198, > > > > psz_file=0x802472c00 "../modules//codec/.libs/libfluidsynth_plugin.so", > > > > p_handle=0x7fffffffd180, lazy=true) at posix/plugin.c:62 > > > >#10 0x0000000800adef4b in module_InitDynamic (obj=0x80244c198, > > > > path=0x802472c00 "../modules//codec/.libs/libfluidsynth_plugin.so", > > > > fast=true) at modules/bank.c:536 > > > >#11 0x0000000800adede2 in AllocatePluginFile (bank=0x7fffffffd490, > > > > abspath=0x802472c00 "../modules//codec/.libs/libfluidsynth_plugin.so", > > > > relpath=0x802472b80 "codec/.libs/libfluidsynth_plugin.so", > > > > st=0x7fffffffd210) at modules/bank.c:479 > > > >#12 0x0000000800adeca3 in AllocatePluginDir (bank=0x7fffffffd490, maxdepth=2, > > > > absdir=0x802472b00 "../modules//codec/.libs", > > > > reldir=0x802472a80 "codec/.libs") at modules/bank.c:440 > > > >#13 0x0000000800adecd7 in AllocatePluginDir (bank=0x7fffffffd490, maxdepth=3, > > > > absdir=0x802472a00 "../modules//codec", reldir=0x8024704f0 "codec") > > > > at modules/bank.c:444 > > > >#14 0x0000000800adecd7 in AllocatePluginDir (bank=0x7fffffffd490, maxdepth=4, > > > > absdir=0x802452c20 "../modules/", reldir=0x0) at modules/bank.c:444 > > > >#15 0x0000000800ade9b8 in AllocatePluginPath (p_this=0x80244c198, > > > > path=0x802452c20 "../modules/", mode=CACHE_USE) at modules/bank.c:353 > > > >#16 0x0000000800ade823 in AllocateAllPlugins (p_this=0x80244c198) > > > > at modules/bank.c:298 > > > >#17 0x0000000800ade55d in module_LoadPlugins (obj=0x80244c198) > > > > at modules/bank.c:189 > > > >#18 0x0000000800a53e63 in libvlc_InternalInit (p_libvlc=0x80244c198, i_argc=3, > > > > ppsz_argv=0x7fffffffd6f0) at libvlc.c:247 > > > >#19 0x000000080082234d in libvlc_new (argc=2, argv=0x7fffffffd7a0) at core.c:59 > > > >#20 0x0000000000400d1c in main (argc=2, argv=0x7fffffffd858) at cachegen.c:107 > > > >(gdb) > > > > > > > >If I remove enough plugins then I can build and install vlc, but the > > > >result isn't very useful. > > > > > > > >The old port builds, installs and works just fine with all the plugins I > > > >want to use so I'll stick to it. > > > > > > I Cc'd -current and kib (who did the majority of the recent rtld commits), > > > maybe he has an idea. Seems dlopen() was called from here, > > > /usr/ports/multimedia/vlc/work/vlc-2.0.3/src/posix/plugin.c , line 62: > > > > > > /** > > > * Load a dynamically linked library using a system dependent method. > > > * > > > * \param p_this vlc object > > > * \param psz_file library file > > > * \param p_handle the module handle returned > > > * \return 0 on success as well as the module handle. > > > */ > > > int module_Load( vlc_object_t *p_this, const char *psz_file, > > > module_handle_t *p_handle, bool lazy ) > > > { > > > #if defined (RTLD_NOW) > > > const int flags = lazy ? RTLD_LAZY : RTLD_NOW; > > > #elif defined (DL_LAZY) > > > const int flags = DL_LAZY; > > > #else > > > const int flags = 0; > > > #endif > > > char *path = ToLocale( psz_file ); > > > > > > module_handle_t handle = dlopen( path, flags ); > > > if( handle == NULL ) > > > { > > > msg_Warn( p_this, "cannot load module `%s' (%s)", path, dlerror() ); > > > LocaleFree( path ); > > > return -1; > > > } > > > LocaleFree( path ); > > > *p_handle = handle; > > > return 0; > > > } > > > > > > Thanx, :) > > > Juergen >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120812231335.GA35313>