<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to resolve SIGBUS from $$dyncall_external in Operating System - Linux</title>
    <link>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921123#M97136</link>
    <description>&lt;!-- !*# --&gt;&lt;P&gt;&amp;gt;The dereferencing of the null pointer occurred at the last line of the following code snippet:&lt;BR /&gt;retVal = osutils-&amp;gt;getpibasedir(name,"",sizeof(name));&lt;BR /&gt;&lt;BR /&gt;Ok, so -z did help you get closer to the problem. If osutils comes from the global:&lt;BR /&gt;return &amp;amp;osutils;&lt;BR /&gt;Then there is no way the the local pointer osutils can be NULL.&lt;BR /&gt;&lt;BR /&gt;&amp;gt;The instruction that produces a segmentation fault because of a null pointer is: LDW 16(%r22),%r22&lt;BR /&gt;&amp;gt;At the instruction before, %r21 contains osutils and the first word is zero which gets placed into %r22 and causes the null pointer dereference.&lt;BR /&gt;&amp;gt;I've been trying to find out what the first word of the object structure represents in the hope it will lead me to the problem. However, I haven't had any luck in searching the HP-UX documentation. Would you know?&lt;BR /&gt;&lt;BR /&gt;Naturally, that's my job to know. :-)&lt;BR /&gt;(If this was IPF, you can look up the ABI on the web.) This indicates the vtable pointer is NULL.&lt;BR /&gt;&lt;BR /&gt;This probably occurs because you are assuming that the global osutils has been constructed before it is used in apifilebuf::initfilename.&lt;BR /&gt;&lt;BR /&gt;What are the two source files?&lt;BR /&gt;&lt;BR /&gt;The standard trick to make sure globals are constructed when you need them is to wrap them in a function. And you are already doing that!&lt;BR /&gt;&lt;BR /&gt;You need to move the global to a function scope static:&lt;BR /&gt;UNIXosutil* getosutil() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static UNIXosutil osutils;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;amp;osutils;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;(The standard trick is to return a reference. Then you can use macros to change the other global references to a function call.)&lt;/P&gt;</description>
    <pubDate>Sat, 22 Oct 2011 19:34:42 GMT</pubDate>
    <dc:creator>Dennis Handly</dc:creator>
    <dc:date>2011-10-22T19:34:42Z</dc:date>
    <item>
      <title>How to resolve SIGBUS from $$dyncall_external</title>
      <link>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921120#M97133</link>
      <description>&lt;BR /&gt;Hi,&lt;BR /&gt;&lt;BR /&gt;{note: description below is also attached as a text file which may be easier to read)&lt;BR /&gt;&lt;BR /&gt;On HP-UX 10.20, I am building a shareable library that contains a number of C and C++ modules.&lt;BR /&gt;&lt;BR /&gt;The C modules are compiled in the following manner:&lt;BR /&gt;&lt;BR /&gt;/opt/ansic/bin/cc -c -g -Ae +ESlit +Z  -Iunix    -Dhpux -DSYSV +DAportable -D_HPUX_SOURCE -DPTHREADFUNC &lt;BR /&gt;-DAPINODEBUFFERING -Dhppa -Dhpux -DUNIX -Dunix    +Z apicomm.c&lt;BR /&gt;&lt;BR /&gt;The C++ modules are compiled in the following manner:&lt;BR /&gt;&lt;BR /&gt;rm -f piunixinterlock.o&lt;BR /&gt;/opt/aCC/bin/aCC -c -g  -AA -Aa -ext +Z -Iunix   -Dhpux -DSYSV +DAportable -D_HPUX_SOURCE -DPTHREADFUNC &lt;BR /&gt;-D__PLACEMENT_NEW_INLINE -DAPINODEBUFFERING -Dhppa -Dhpux -DUNIX -Dunix    +Z piunixinterlock.cxx&lt;BR /&gt;&lt;BR /&gt;The shareable library is put together in the following manner:&lt;BR /&gt;&lt;BR /&gt;rm -f libpiapi.sl~&lt;BR /&gt;(cd .; /opt/aCC/bin/aCC -o ./libpiapi.sl~ -b -Wl,+s,-c,piapiexports.hpux  -Wl,+h,libpiapi.sl allnet.o apicomm.o doclient.o hreverse.o piarsub.o pielsub.o pilgsub.o piptsub.o pisnsub.o  pitmsub.o piutsub.o  prof.o ioshmem.o msgq.o bufglob.o &lt;BR /&gt;bufmgr.o bufparms.o osutil.o piapix.o pibacl.o pigrdcl.o piliccl.o pisqlcl.o  pterror.o ptextattrs.o qbind.o shmembuf.o &lt;BR /&gt;ptcacheimpl.o ptcachemgr.o piarg.o piargent.o  pibookmark.o pidig.o  pidir.o pievent.o  pifile.o pigrid.o pilicense.o &lt;BR /&gt;pimoduledbnames.o  pinttmpl.o pintutil.o  piosinfo.o pipelib.o  pipoint.o pirep.o  pisecobj.o  pishlib.o pistatus.o &lt;BR /&gt;pistring.o  pistringw.o pitable.o  pitime.o pitmplar.o pitxtprmpt.o pitzinfo.o  piuid.o  piunixfilemap.o  pivalue.o pivariant.o  pixmlutil.o  pibackedupfile.o  pibackedupfiles.o  pivsselements.o  piquicklock.o  pisemaphore.o  piunixcritsect.o  piunixinterlock.o  pthread_substitute.o    -Wl,+b,.)&lt;BR /&gt;&lt;BR /&gt;When executing a program that uses the shareable library I get a SIGBUS error with Frame 0 being that of $$dyncall_external. &lt;BR /&gt;&lt;BR /&gt;gdb output below:&lt;BR /&gt;&lt;BR /&gt;(gdb) i r&lt;BR /&gt;   flags: 29000001       r18: 40006edd     pcsqt:     5d1d       ccr:        0&lt;BR /&gt;      r1: 7a913ef3       r19: 7a7d1574      eiem: fffffffe      cr12: ffffffff&lt;BR /&gt;      rp: 7a9a2623       r20: 54000000       iir:        4      cr13: ffffffff&lt;BR /&gt;      r3: 7b03ae48       r21: 7a80f158       isr:     6d2a      cr24:        0&lt;BR /&gt;      r4: 7b03a8b8       r22:        0       ior:        0      cr25:        1&lt;BR /&gt;      r5: 7b03a818       r23:       ff      ipsw:    4000f      cr26:        1&lt;BR /&gt;      r6:     1f08       r24: 7a91b086      goto:        2  mpsfu_hi:        0&lt;BR /&gt;      r7: 7b03a910       r25: 40003c18       sr4:     6d2a  mpsfu_lo:        0&lt;BR /&gt;      r8:       40       r26: 7a80f158       sr0:     5d1d  mpsfu_ov:        0&lt;BR /&gt;      r9: 40001250        dp: 40001638       sr1:     7313       pad:        0&lt;BR /&gt;     r10:       74      ret0: 7a80f158       sr2:     6066      fpsr:        0&lt;BR /&gt;     r11:       72      ret1:        3       sr3:        0      fpe1:        0&lt;BR /&gt;     r12:       56        sp: 7b03ae48       sr5:     5d1d      fpe2:        0&lt;BR /&gt;     r13:       54       r31: 7a9a2623       sr6:     7313      fpe3:        0&lt;BR /&gt;     r14:       52       sar:       18       sr7:        0      fpe4:        0&lt;BR /&gt;     r15:       43     pcoqh: 7a913ef0       cr0:        0      fpe5:        0&lt;BR /&gt;     r16:       3f     pcsqh:     5d1d       cr8:        0      fpe6:        0&lt;BR /&gt;     r17:        4     pcoqt: 7a913ef4       cr9:        0      fpe7:        0&lt;BR /&gt;(gdb) x/i $pc&lt;BR /&gt;0x7a913ef0 &amp;lt;$$dyncall_external&amp;gt;:        ldw 2(%sr0,%r22),%r19&lt;BR /&gt;(gdb) stepi&lt;BR /&gt;&lt;BR /&gt;Program received signal SIGBUS, Bus error.&lt;BR /&gt;0x7a913ef0 in  () from /home/piadmin/piapi/v1617_sf_debug/test/buftest/../../lib/libpiapi.sl&lt;BR /&gt;(gdb) bt&lt;BR /&gt;#0  0x7a913ef0 in  () from /home/piadmin/piapi/v1617_sf_debug/test/buftest/../../lib/libpiapi.sl&lt;BR /&gt;#1  0x7a9a2620 in apifilebuf::initfilename (this=0x40003bfc) at shmembuf.cxx:670&lt;BR /&gt;#2  0x7a9a3640 in apifilebuf::initexisting (this=0x40003bfc) at shmembuf.cxx:870&lt;BR /&gt;#3  0x7a9a360c in apifilebuf::initexisting (this=0x40003bfc, newfname=0x7b03acd8 "APIBUF_SFIORELLIGX620.DAT") at &lt;BR /&gt;&lt;BR /&gt;shmembuf.cxx:859&lt;BR /&gt;#4  0x7a971458 in bufservermgr::open (this=0x40003b00) at bufmgr.cxx:382&lt;BR /&gt;#5  0x7a96a110 in openbufmgr (pbufmgr=0x40003b00) at bufglob.cxx:254&lt;BR /&gt;#6  0x7a94aa50 in pisetactiveservernode (server=0x7b03a8b8 "testServer") at apicomm.c:2415&lt;BR /&gt;#7  0x7a9645d8 in piut_setservernode (servername=0x7b03a8b8 "testServer") at piutsub.c:548&lt;BR /&gt;#8  0x4800 in bufconnect () at buftest.c:601&lt;BR /&gt;#9  0x412c in main () at buftest.c:529&lt;BR /&gt;(gdb)&lt;BR /&gt;&lt;BR /&gt;A chatr of the test program is below (libapiapi.sl is the shareable library I created):&lt;BR /&gt;&lt;BR /&gt;peach&amp;gt; chatr testapi&lt;BR /&gt;testapi:&lt;BR /&gt;         shared executable&lt;BR /&gt;         shared library dynamic path search:&lt;BR /&gt;             SHLIB_PATH     enabled   second&lt;BR /&gt;             embedded path  enabled   first  ../../lib:.&lt;BR /&gt;         internal name:&lt;BR /&gt;             testapi&lt;BR /&gt;         shared library list:&lt;BR /&gt;             dynamic   ../../lib/libpiapi.sl&lt;BR /&gt;             dynamic   /usr/lib/libstd_v2.1&lt;BR /&gt;             dynamic   /usr/lib/libCsup_v2.1&lt;BR /&gt;             dynamic   /usr/lib/pa1.1/libcl.1&lt;BR /&gt;             dynamic   /usr/lib/libc.1&lt;BR /&gt;             static    /usr/lib/libdld.1&lt;BR /&gt;         shared library binding:&lt;BR /&gt;             deferred&lt;BR /&gt;         global hash table disabled&lt;BR /&gt;         plabel caching disabled&lt;BR /&gt;         global hash array size:1103&lt;BR /&gt;         global hash array nbuckets:3&lt;BR /&gt;         shared vtable support disabled&lt;BR /&gt;         static branch prediction disabled&lt;BR /&gt;         kernel assisted branch prediction enabled&lt;BR /&gt;         lazy swap allocation disabled&lt;BR /&gt;         text segment locking disabled&lt;BR /&gt;         data segment locking disabled&lt;BR /&gt;         third quadrant private data space disabled&lt;BR /&gt;         fourth quadrant private data space disabled&lt;BR /&gt;         data page size: 4K&lt;BR /&gt;         instruction page size: 4K&lt;BR /&gt;peach&amp;gt;&lt;BR /&gt;&lt;BR /&gt;A build and execution of the test program (testapi) and shareable library on HP-UX 11.11 is sucessful.  From searching the &lt;BR /&gt;&lt;BR /&gt;web, I see that $$dyncall_external has something to do with dynamic calls and SIGBUS occurs in unaligned memory access.  &lt;BR /&gt;&lt;BR /&gt;However, I'm at a loss as to how to resolve this.  Any suggestions would be appreciated.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Thanks--Steve</description>
      <pubDate>Thu, 04 Jan 2007 18:45:13 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921120#M97133</guid>
      <dc:creator>Steve Fiorelli</dc:creator>
      <dc:date>2007-01-04T18:45:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to resolve SIGBUS from $$dyncall_external</title>
      <link>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921121#M97134</link>
      <description>This says that frame #1 initfilename is either calling a virtual function or doing an indirect call.  The value of R22 is the plabel.  In your case it is 0.  Something that hasn't been initialized. &lt;BR /&gt;&lt;BR /&gt;What are you doing on shmembuf.cxx:670?&lt;BR /&gt;&lt;BR /&gt;You may want to link your executable with -z so you abort on NULL pointer dereferences.  Or use chatr -z executable.</description>
      <pubDate>Thu, 04 Jan 2007 21:43:14 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921121#M97134</guid>
      <dc:creator>Dennis Handly</dc:creator>
      <dc:date>2007-01-04T21:43:14Z</dc:date>
    </item>
    <item>
      <title>Re: How to resolve SIGBUS from $$dyncall_external</title>
      <link>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921122#M97135</link>
      <description>&lt;!--!*#--&gt;&lt;BR /&gt;Thanks.  I compiled with -z and continued my investigation.&lt;BR /&gt;&lt;BR /&gt;The dereferencing of the null pointer occurred at the last line of the following code snippet:&lt;BR /&gt;&lt;BR /&gt;int32 apifilebuf::initfilename()&lt;BR /&gt;{&lt;BR /&gt;    int32 retVal;&lt;BR /&gt;    char testname[80];&lt;BR /&gt;&lt;BR /&gt;    osutil * osutils = getosutil(); &lt;BR /&gt;&lt;BR /&gt;    /* get the PIHOME location.  If not found get temp directory */&lt;BR /&gt;    retVal = osutils-&amp;gt;getpibasedir(name,"",sizeof(name));&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Where getosutil() is implemented as:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;#ifdef WIN32&lt;BR /&gt;    NTosutil osutils;&lt;BR /&gt;    NTosutil * getosutil()&lt;BR /&gt;#else&lt;BR /&gt;    UNIXosutil osutils;&lt;BR /&gt;    UNIXosutil * getosutil()&lt;BR /&gt;#endif&lt;BR /&gt;{&lt;BR /&gt;    return &amp;amp; osutils;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;with UNIXosutil defined as:&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;class UNIXosutil : public osutil&lt;BR /&gt;{&lt;BR /&gt;public:&lt;BR /&gt;    int32 getpibasedir(char * basedir, char *defaultvalue, const uint32 len);&lt;BR /&gt;    char * maketempfile(char * mask);&lt;BR /&gt;    const char * safegetenv(const char * name);&lt;BR /&gt;    virtual void grantfileaccess(char *name);&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;and getpibasedir implement as:&lt;BR /&gt;&lt;BR /&gt;int32 UNIXosutil::getpibasedir(char * basedir,char *defaultvalue, const uint32 len)&lt;BR /&gt;{&lt;BR /&gt;        strncpy(basedir,defaultvalue, len-1);&lt;BR /&gt;        basedir[len-1] = 0;&lt;BR /&gt;&lt;BR /&gt;    strncpy(basedir,safegetenv("PIHOME"),(unsigned)(len-1));&lt;BR /&gt;    basedir[len-1] = '\0';&lt;BR /&gt;    return APIBUFERR_SUCCESS;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;The assembler generated for the beginning of apifilebuf::initfilename:&lt;BR /&gt;&lt;BR /&gt;        .SPACE  $TEXT$&lt;BR /&gt;        .SUBSPA $CODE$,QUAD=0,ALIGN=4,ACCESS=0x2c,CODE_ONLY,SORT=24&lt;BR /&gt;; line 0&lt;BR /&gt;initfilename__10apifilebufFv&lt;BR /&gt;        .PROC&lt;BR /&gt;        .CALLINFO CALLER,FRAME=16,ENTRY_GR=%r4,SAVE_RP,ARGS_SAVED&lt;BR /&gt;        .ENTRY&lt;BR /&gt;        STW     %r2,-20(%r30)   ;offset 0xb9d4&lt;BR /&gt;        STW,MA  %r3,64(%r30)    ;offset 0xb9d8&lt;BR /&gt;        STW     %r4,-60(%r30)   ;offset 0xb9dc&lt;BR /&gt;        STW     %r19,-32(%r30)  ;offset 0xb9e0&lt;BR /&gt;        B,L     .+8,%r3 ;offset 0xb9e4&lt;BR /&gt;$PIC$90&lt;BR /&gt;        DEPWI   0,31,2,%r3      ;offset 0xb9e8&lt;BR /&gt;        STW     %r26,-100(%r30) ;offset 0xb9ec&lt;BR /&gt;; line 668&lt;BR /&gt;        .CALL   RTNVAL=GR       ;out=28;&lt;BR /&gt;        B,L     getosutil__Fv,%r2       ;offset 0xb9f0&lt;BR /&gt;        NOP             ;offset 0xb9f4&lt;BR /&gt;        LDW     -32(%r30),%r19  ;offset 0xb9f8&lt;BR /&gt;        STW     %r28,-56(%r30)  ;offset 0xb9fc&lt;BR /&gt;; line 671&lt;BR /&gt;        LDW     -56(%r30),%r21  ;offset 0xba00&lt;BR /&gt;        LDW     0(%r21),%r22    ;offset 0xba04&lt;BR /&gt;        LDW     16(%r22),%r22   ;offset 0xba08&lt;BR /&gt;        COPY    %r21,%r26       ;offset 0xba0c&lt;BR /&gt;        LDW     -100(%r30),%r1  ;offset 0xba10&lt;BR /&gt;        LDO     28(%r1),%r25    ;offset 0xba14&lt;BR /&gt;        ADDIL   LR'C$2-$PIC$90-4,%r3,%r1        ;offset 0xba18&lt;BR /&gt;        LDO     RR'C$2-$PIC$90+26(%r1),%r24     ;offset 0xba1c&lt;BR /&gt;        LDI     255,%r23        ;offset 0xba20&lt;BR /&gt;        .CALL   ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR   ;in=22,23,24,25,26;out=28;&lt;BR /&gt;        B,L     $$dyncall,%r31  ;offset 0xba24&lt;BR /&gt;        COPY    %r31,%r2        ;offset 0xba28&lt;BR /&gt;        LDW     -32(%r30),%r19  ;offset 0xba2c&lt;BR /&gt;        STW     %r28,-52(%r30)  ;offset 0xba30&lt;BR /&gt;; line 672&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;The instruction that produces a segmentation fault because of a null pointer is:&lt;BR /&gt;&lt;BR /&gt;        LDW     16(%r22),%r22   ;offset 0xba08&lt;BR /&gt;&lt;BR /&gt;At the instruction before, %r21 contains osutils and the first word is zero which gets placed into %r22 and causes the null pointer dereference.&lt;BR /&gt;&lt;BR /&gt;(gdb) p osutils&lt;BR /&gt;$2 = (class osutil *) 0x7a80f158&lt;BR /&gt;(gdb) x/x 0x7a80f158&lt;BR /&gt;0x7a80f158:     0x00000000&lt;BR /&gt;(gdb)&lt;BR /&gt;0x7a80f15c:     0x40003d90&lt;BR /&gt;&lt;BR /&gt;I've been trying to find out what the first word of the object structure represents in the hope it will lead me to the problem.  However, I haven't had any luck in searching the HP-UX documentation.  Would you know?  Or if you believe I am going down the wrong path any further suggestions would be appreciated.&lt;BR /&gt;&lt;BR /&gt;Thanks--Steve</description>
      <pubDate>Wed, 10 Jan 2007 14:11:32 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921122#M97135</guid>
      <dc:creator>Steve Fiorelli</dc:creator>
      <dc:date>2007-01-10T14:11:32Z</dc:date>
    </item>
    <item>
      <title>Re: How to resolve SIGBUS from $$dyncall_external</title>
      <link>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921123#M97136</link>
      <description>&lt;!-- !*# --&gt;&lt;P&gt;&amp;gt;The dereferencing of the null pointer occurred at the last line of the following code snippet:&lt;BR /&gt;retVal = osutils-&amp;gt;getpibasedir(name,"",sizeof(name));&lt;BR /&gt;&lt;BR /&gt;Ok, so -z did help you get closer to the problem. If osutils comes from the global:&lt;BR /&gt;return &amp;amp;osutils;&lt;BR /&gt;Then there is no way the the local pointer osutils can be NULL.&lt;BR /&gt;&lt;BR /&gt;&amp;gt;The instruction that produces a segmentation fault because of a null pointer is: LDW 16(%r22),%r22&lt;BR /&gt;&amp;gt;At the instruction before, %r21 contains osutils and the first word is zero which gets placed into %r22 and causes the null pointer dereference.&lt;BR /&gt;&amp;gt;I've been trying to find out what the first word of the object structure represents in the hope it will lead me to the problem. However, I haven't had any luck in searching the HP-UX documentation. Would you know?&lt;BR /&gt;&lt;BR /&gt;Naturally, that's my job to know. :-)&lt;BR /&gt;(If this was IPF, you can look up the ABI on the web.) This indicates the vtable pointer is NULL.&lt;BR /&gt;&lt;BR /&gt;This probably occurs because you are assuming that the global osutils has been constructed before it is used in apifilebuf::initfilename.&lt;BR /&gt;&lt;BR /&gt;What are the two source files?&lt;BR /&gt;&lt;BR /&gt;The standard trick to make sure globals are constructed when you need them is to wrap them in a function. And you are already doing that!&lt;BR /&gt;&lt;BR /&gt;You need to move the global to a function scope static:&lt;BR /&gt;UNIXosutil* getosutil() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static UNIXosutil osutils;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;amp;osutils;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;(The standard trick is to return a reference. Then you can use macros to change the other global references to a function call.)&lt;/P&gt;</description>
      <pubDate>Sat, 22 Oct 2011 19:34:42 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-linux/how-to-resolve-sigbus-from-dyncall-external/m-p/3921123#M97136</guid>
      <dc:creator>Dennis Handly</dc:creator>
      <dc:date>2011-10-22T19:34:42Z</dc:date>
    </item>
  </channel>
</rss>

