[prev] [thread] [next] [Date index for 2004/07/30]
This is a multi-part message in MIME format. ------_=_NextPart_001_01C47635.92177DA6 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I've been following through with the debugger: =20 $class->primary_column() works in my code just before I call create, but it fails catastrophically in Class::DBI::_create.=20 =20 $class->columns() continues to work in both. =20 -----Original Message----- From: Ian McDonald-ONLINE=20 Sent: 29 July 2004 19:15 To: cdbi-talk@xxxxxx.xxxxx.xxx Subject: Death by deep recursion: why might this be? Hi,=20 I'm not sure what's going on here.=20 I'm trying to create a Class::DBI subclass object from within my code, and it's consistently crashing with a segmentation fault.=20 The problem goes away when I call create on the same class and parameters, but with fewer modules. I'm not asking anyone to pinpoint the problem - I'm guessing that it is in my code's use of Class::DBI somewhere, because I can get the same method call to work out of this context ... but I'd like to know what *might* be causing it. This is a Trace of the last few moments of the executable:=20 BBC::Plutus::Domain::Resource (209) :: ...)=20 Class::DBI (342) :: Class::DBI [342]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 Class::DBI (342) :: Class::DBI [342]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 Class::DBI (342) :: Class::DBI [342]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 Class::DBI (342) :: Class::DBI [342]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 Class::DBI (328) :: Class::DBI [328]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 Deep recursion on subroutine "Class::DBI::_undefined_primary" at /home/ianm/conquer/cgi-bin/lib/Class/DBI.pm line 38.=20 Deep recursion on subroutine "Class::DBI::primary_column" at /home/ianm/conquer/cgi-bin/lib/Class/DBI.pm line 51.=20 Deep recursion on anonymous subroutine at /home/ianm/conquer/cgi-bin/lib/Class/DBI.pm line 328.=20 Deep recursion on anonymous subroutine at /home/ianm/conquer/cgi-bin/lib/Tracing.pm line 202.=20 Segmentation Fault (core dumped)=20 bash-2.02$=20 This is some debugging output, verifying that the columns are properly set up. The id column is a MySQL auto_increment column, which is why it isn't set in my create call. DB<5> p BBC::Plutus::Persist::ActiveRecord::Resource->columns()=20 Class::DBI (309) :: Class::DBI [309]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 =09 parentcha_idnumbertime_createdres_targetloyaltyidres_attachsizetype=20 DB<6> p BBC::Plutus::Persist::ActiveRecord::Resource->primaryKey()=20 Can't locate object method "primaryKey" via package "BBC::Plutus::Persist::ActiveRecord::Resource" (perhaps you forgot to load "BBC::Plutus::Persist::ActiveRecord::Resource"?) at (eval 60)[/usr/local/perl-5.6.1/lib/perl5/5.6.1/perl5db.pl:1521] line 2. DB<7> p BBC::Plutus::Persist::ActiveRecord::Resource->primary_column()=20 Class::DBI (328) :: Class::DBI [328]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 id=20 DB<8> p BBC::Plutus::Persist::ActiveRecord::Resource->primary_columns()=20 Class::DBI (328) :: Class::DBI [328]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 id=20 DB<9> p BBC::Plutus::Persist::ActiveRecord::Resource->_essential()=20 Class::DBI (338) :: Class::DBI [338]: BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )=20 id=20 This is some debugging of the actual call.=20 BBC::Plutus::Domain::Resource (207) :: BBC::Plutus::Persist::ActiveRecord::Resource->create( ...=20 BBC::Plutus::Domain::Resource (208) :: $VAR1 =3D {=20 NUMBER =3D> 1,=20 SIZE =3D> 2,=20 TYPE =3D> 'TEST',=20 LOYALTY =3D> 1=20 };=20 Version dumps, should anyone want them are:=20 Class-DBI-0.96=20 Class-Accessor-0.19=20 Class-Data-Inheritable-0.02=20 Ima-DBI-0.33=20 DBI-1.43=20 Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:=20 Platform:=20 osname=3Dsolaris, osvers=3D2.6, archname=3Dsun4-solaris=20 uname=3D'sunos ops-dev4 5.6 generic_105181-19 sun4u sparc sunw,ultrasparc-iii-cengine '=20 config_args=3D'-Dprefix=3D/usr/local/perl-5.6.1'=20 hint=3Dprevious, useposix=3Dtrue, d_sigaction=3Ddefine=20 usethreads=3Dundef use5005threads=3Dundef useithreads=3Dundef usemultiplicity=3Dundef=20 useperlio=3Dundef d_sfio=3Dundef uselargefiles=3Ddefine usesocks=3Dundef=20 use64bitint=3Dundef use64bitall=3Dundef uselongdouble=3Dundef=20 Compiler:=20 cc=3D'gcc', ccflags =3D'-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=3D64',=20 optimize=3D'-O',=20 cppflags=3D'-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=3D64'=20 ccversion=3D'', gccversion=3D'2.95.3 20010315 (release)', gccosandvers=3D'solaris2.8'=20 intsize=3D4, longsize=3D4, ptrsize=3D4, doublesize=3D8, byteorder=3D4321=20 d_longlong=3Ddefine, longlongsize=3D8, d_longdbl=3Ddefine, longdblsize=3D16=20 ivtype=3D'long', ivsize=3D4, nvtype=3D'double', nvsize=3D8, Off_t=3D'off_t', lseeksize=3D8=20 alignbytes=3D8, usemymalloc=3Dy, prototype=3Ddefine=20 Linker and Libraries:=20 ld=3D'gcc', ldflags =3D' -L/usr/local/lib '=20 libpth=3D/usr/local/lib /usr/lib /usr/ccs/lib=20 libs=3D-lsocket -lnsl -lgdbm -ldl -lm -lc=20 perllibs=3D-lsocket -lnsl -ldl -lm -lc=20 libc=3D/lib/libc.so, so=3Dso, useshrplib=3Dfalse, libperl=3Dlibperl.a=20 Dynamic Linking:=20 dlsrc=3Ddl_dlopen.xs, dlext=3Dso, d_dlsymun=3Dundef, ccdlflags=3D' '= cccdlflags=3D'-fPIC', lddlflags=3D'-G -L/usr/local/lib'=20 Characteristics of this binary (from libperl):=20 Compile-time options: USE_LARGE_FILES=20 Built under solaris=20 Compiled at May 12 2003 13:03:19=20 --=20 Dr Ian McDonald=20 Software Engineer, Interactive Drama & Entertainment=20 Conquer the Earth! - The Doctor Who monsters game=20 The Rome Game: Do as the Romans do. Lie, cheat, and steal.=20 A300, 56-58 Wood Lane (CH), London W12 7SB=20 020 822 56162=20 ian.mcdonald@xxx.xx.xx / "Ian McDonald-ONLINE" (not "Ian MacDonald")=20 http://www.bbc.co.uk/ - World Wide Wonderland =09 This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated. If you have received it in error, please delete it from your system.=20 Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately. Please note that the BBC monitors e-mails sent or received.=20 Further communication will signify your consent to this.=20 http://www.bbc.co.uk/ - World Wide Wonderland This e-mail (and any attachments) is confidential and may contain personal views which are not the views of the BBC unless specifically stated. If you have received it in error, please delete it from your system.=20 Do not use, copy or disclose the information in any way nor act in reliance on it and notify the sender immediately. Please note that the BBC monitors e-mails sent or received.=20 Further communication will signify your consent to this. ------_=_NextPart_001_01C47635.92177DA6 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>Message</TITLE> <META http-equiv=3DContent-Type content=3D"text/html; charset=3Dus-ascii"= > <META content=3D"MSHTML 6.00.2800.1400" name=3DGENERATOR></HEAD> <BODY> <DIV><FONT face=3DArial color=3D#0000ff size=3D2> <DIV><SPAN class=3D600405112-30072004><FONT face=3DArial color=3D#0000ff = size=3D2>I've=20 been following through with the debugger:</FONT></SPAN></DIV> <DIV><SPAN class=3D600405112-30072004><FONT face=3DArial color=3D#0000ff=20= size=3D2></FONT></SPAN> </DIV> <DIV><SPAN class=3D600405112-30072004><FONT face=3DArial color=3D#0000ff=20= size=3D2>$class->primary_column() works in my code just before I call = create,=20 but it fails catastrophically in Class::DBI::_create. </FONT></SPAN></DIV= > <DIV><SPAN class=3D600405112-30072004><FONT face=3DArial color=3D#0000ff=20= size=3D2></FONT></SPAN> </DIV> <DIV><SPAN class=3D600405112-30072004><FONT face=3DArial color=3D#0000ff=20= size=3D2>$class->columns() continues to work in both.</FONT></SPAN></D= IV> <DIV><SPAN class=3D600405112-30072004></SPAN> </DIV></FONT> <DIV></DIV><FONT face=3DTahoma size=3D2>-----Original Message-----<BR><B>= From:</B>=20 Ian McDonald-ONLINE <BR><B>Sent:</B> 29 July 2004 19:15<BR><B>To:</B>=20 cdbi-talk@xxxxxx.xxxxx.xxx<BR><B>Subject:</B> Death by deep recursion: wh= y might=20 this be?<BR><BR></FONT></DIV> <BLOCKQUOTE style=3D"MARGIN-RIGHT: 0px"><!-- Converted from text/rtf form= at --> <P><FONT face=3DArial size=3D2>Hi,</FONT> </P> <P><FONT face=3DArial size=3D2>I'm not sure what's going on here. </FON= T></P> <P><FONT face=3DArial size=3D2>I'm trying to create a Class::DBI subcla= ss object=20 from within my code, and it's consistently crashing with a segmentation= fault.=20 </FONT></P> <P><FONT face=3DArial size=3D2>The problem goes away when I call create= on the=20 same class and parameters, but with fewer modules. I'm not asking anyon= e to=20 pinpoint the problem - I'm guessing that it is in my code's use of Clas= s::DBI=20 somewhere, because I can get the same method call to work out of this c= ontext=20 … but I'd like to know what *might* be causing it.</FONT></P> <P><FONT face=3DArial size=3D2>This is a Trace of the last few moments = of the=20 executable:</FONT> </P> <P><FONT face=3DArial size=3D2>BBC::Plutus::Domain::Resource (209) ::&n= bsp;=20 ...)</FONT> <BR><FONT face=3DArial size=3D2>Class::DBI (342) :: Class::= DBI [342]:=20 BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial size=3D2>Class::DBI (342) :: Class::DBI [342]:=20= BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial size=3D2>Class::DBI (342) :: Class::DBI [342]:=20= BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial size=3D2>Class::DBI (342) :: Class::DBI [342]:=20= BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial size=3D2>Class::DBI (328) :: Class::DBI [328]:=20= BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial size=3D2>Deep recursion on subroutine=20 "Class::DBI::_undefined_primary" at=20 /home/ianm/conquer/cgi-bin/lib/Class/DBI.pm line 38.</FONT> <BR><FONT=20= face=3DArial size=3D2>Deep recursion on subroutine "Class::DBI::primary= _column" at=20 /home/ianm/conquer/cgi-bin/lib/Class/DBI.pm line 51.</FONT> <BR><FONT=20= face=3DArial size=3D2>Deep recursion on anonymous subroutine at=20 /home/ianm/conquer/cgi-bin/lib/Class/DBI.pm line 328.</FONT> <BR><FONT=20= face=3DArial size=3D2>Deep recursion on anonymous subroutine at=20 /home/ianm/conquer/cgi-bin/lib/Tracing.pm line 202.</FONT> <BR><FONT=20= face=3DArial size=3D2>Segmentation Fault (core dumped)</FONT> <BR><FONT= face=3DArial=20 size=3D2>bash-2.02$ </FONT></P><BR> <P><FONT face=3DArial size=3D2>This is some debugging output, verifying= that the=20 columns are properly set up. The id column is a MySQL auto_increment co= lumn,=20 which is why it isn't set in my create call.</FONT></P> <P><FONT face=3DArial size=3D2> DB<5> p=20 BBC::Plutus::Persist::ActiveRecord::Resource->columns()</FONT> <BR><= FONT=20 face=3DArial size=3D2>Class::DBI (309) :: Class::DBI [309]:=20 BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial=20 size=3D2>parentcha_idnumbertime_createdres_targetloyaltyidres_attachsiz= etype</FONT>=20 <BR><FONT face=3DArial size=3D2> DB<6> p=20 BBC::Plutus::Persist::ActiveRecord::Resource->primaryKey()</FONT> <B= R><FONT=20 face=3DArial size=3D2>Can't locate object method "primaryKey" via packa= ge=20 "BBC::Plutus::Persist::ActiveRecord::Resource" (perhaps you forgot to l= oad=20 "BBC::Plutus::Persist::ActiveRecord::Resource"?) at (eval=20 60)[/usr/local/perl-5.6.1/lib/perl5/5.6.1/perl5db.pl:1521] line 2.</FON= T></P> <P><FONT face=3DArial size=3D2> DB<7> p=20 BBC::Plutus::Persist::ActiveRecord::Resource->primary_column()</FONT= >=20 <BR><FONT face=3DArial size=3D2>Class::DBI (328) :: Class::DBI [328]:=20= BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial size=3D2>id</FONT> <BR><FONT face=3DArial size=3D= 2> =20 DB<8> p=20 BBC::Plutus::Persist::ActiveRecord::Resource->primary_columns()</FON= T>=20 <BR><FONT face=3DArial size=3D2>Class::DBI (328) :: Class::DBI [328]:=20= BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial size=3D2>id</FONT> <BR><FONT face=3DArial size=3D= 2> =20 DB<9> p=20 BBC::Plutus::Persist::ActiveRecord::Resource->_essential()</FONT> <B= R><FONT=20 face=3DArial size=3D2>Class::DBI (338) :: Class::DBI [338]:=20 BBC::Plutus::Persist::ActiveRecord::Resource::__grouper( )</FONT>= =20 <BR><FONT face=3DArial size=3D2>id</FONT> </P> <P><FONT face=3DArial size=3D2>This is some debugging of the actual cal= l.</FONT>=20 </P> <P><FONT face=3DArial size=3D2>BBC::Plutus::Domain::Resource (207) ::=20= BBC::Plutus::Persist::ActiveRecord::Resource->create( ...</FONT> <BR= ><FONT=20 face=3DArial size=3D2>BBC::Plutus::Domain::Resource (208) :: $VAR1 =3D = {</FONT>=20 <BR><FONT face=3DArial size=3D2> NUMBER =3D> 1,</FONT> <BR><FO= NT face=3DArial=20 size=3D2> SIZE =3D> 2,</FONT> <BR><FONT face=3DArial size=3D2>= TYPE=20 =3D> 'TEST',</FONT> <BR><FONT face=3DArial size=3D2> LOYALTY =3D= > 1</FONT>=20 <BR><FONT face=3DArial size=3D2>};</FONT> </P> <P><FONT face=3DArial size=3D2>Version dumps, should anyone want them a= re:</FONT>=20 <BR><FONT face=3DArial size=3D2>Class-DBI-0.96</FONT> <BR><FONT face=3D= Arial=20 size=3D2>Class-Accessor-0.19</FONT> <BR><FONT face=3DArial=20 size=3D2>Class-Data-Inheritable-0.02</FONT> <BR><FONT face=3DArial=20 size=3D2>Ima-DBI-0.33</FONT> <BR><FONT face=3DArial size=3D2>DBI-1.43</= FONT> </P> <P><FONT face=3DArial size=3D2>Summary of my perl5 (revision 5.0 versio= n 6=20 subversion 1) configuration:</FONT> <BR><FONT face=3DArial size=3D2>&nb= sp;=20 Platform:</FONT> <BR><FONT face=3DArial size=3D2> =20 osname=3Dsolaris, osvers=3D2.6, archname=3Dsun4-solaris</FONT> <BR><FON= T face=3DArial=20 size=3D2> uname=3D'sunos ops-dev4 5.6 generic_105181-= 19 sun4u=20 sparc sunw,ultrasparc-iii-cengine '</FONT> <BR><FONT face=3DArial=20 size=3D2> config_args=3D'-Dprefix=3D/usr/local/perl-5= =2E6.1'</FONT>=20 <BR><FONT face=3DArial size=3D2> hint=3Dprevious, use= posix=3Dtrue,=20 d_sigaction=3Ddefine</FONT> <BR><FONT face=3DArial size=3D2>  = ; =20 usethreads=3Dundef use5005threads=3Dundef useithreads=3Dundef=20 usemultiplicity=3Dundef</FONT> <BR><FONT face=3DArial size=3D2> &n= bsp; =20 useperlio=3Dundef d_sfio=3Dundef uselargefiles=3Ddefine usesocks=3Dunde= f</FONT>=20 <BR><FONT face=3DArial size=3D2> use64bitint=3Dundef=20= use64bitall=3Dundef uselongdouble=3Dundef</FONT> <BR><FONT face=3DArial= =20 size=3D2> Compiler:</FONT> <BR><FONT face=3DArial size=3D2> = =20 cc=3D'gcc', ccflags =3D'-fno-strict-aliasing -I/usr/local/include=20 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=3D64',</FONT> <BR><FONT face=3D= Arial=20 size=3D2> optimize=3D'-O',</FONT> <BR><FONT face=3DAr= ial=20 size=3D2> cppflags=3D'-fno-strict-aliasing -I/usr/loc= al/include=20 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=3D64'</FONT> <BR><FONT face=3DA= rial=20 size=3D2> ccversion=3D'', gccversion=3D'2.95.3 200103= 15=20 (release)', gccosandvers=3D'solaris2.8'</FONT> <BR><FONT face=3DArial=20= size=3D2> intsize=3D4, longsize=3D4, ptrsize=3D4, dou= blesize=3D8,=20 byteorder=3D4321</FONT> <BR><FONT face=3DArial size=3D2> &nb= sp;=20 d_longlong=3Ddefine, longlongsize=3D8, d_longdbl=3Ddefine, longdblsize=3D= 16</FONT>=20 <BR><FONT face=3DArial size=3D2> ivtype=3D'long', ivs= ize=3D4,=20 nvtype=3D'double', nvsize=3D8, Off_t=3D'off_t', lseeksize=3D8</FONT> <B= R><FONT=20 face=3DArial size=3D2> alignbytes=3D8, usemymalloc=3D= y,=20 prototype=3Ddefine</FONT> <BR><FONT face=3DArial size=3D2> Linker= and=20 Libraries:</FONT> <BR><FONT face=3DArial size=3D2> ld= =3D'gcc',=20 ldflags =3D' -L/usr/local/lib '</FONT> <BR><FONT face=3DArial=20 size=3D2> libpth=3D/usr/local/lib /usr/lib /usr/ccs/l= ib</FONT>=20 <BR><FONT face=3DArial size=3D2> libs=3D-lsocket -lns= l -lgdbm -ldl=20 -lm -lc</FONT> <BR><FONT face=3DArial size=3D2> =20 perllibs=3D-lsocket -lnsl -ldl -lm -lc</FONT> <BR><FONT face=3DArial=20= size=3D2> libc=3D/lib/libc.so, so=3Dso, useshrplib=3D= false,=20 libperl=3Dlibperl.a</FONT> <BR><FONT face=3DArial size=3D2> Dynam= ic=20 Linking:</FONT> <BR><FONT face=3DArial size=3D2> =20 dlsrc=3Ddl_dlopen.xs, dlext=3Dso, d_dlsymun=3Dundef, ccdlflags=3D' '</F= ONT> <BR><FONT=20 face=3DArial size=3D2> cccdlflags=3D'-fPIC', lddlflag= s=3D'-G=20 -L/usr/local/lib'</FONT> </P><BR> <P><FONT face=3DArial size=3D2>Characteristics of this binary (from lib= perl):=20 </FONT><BR><FONT face=3DArial size=3D2> Compile-time options:=20 USE_LARGE_FILES</FONT> <BR><FONT face=3DArial size=3D2> Built und= er=20 solaris</FONT> <BR><FONT face=3DArial size=3D2> Compiled at May 1= 2 2003=20 13:03:19</FONT> </P> <P><FONT face=3DArial color=3D#808080 size=3D1>--</FONT> <BR><FONT face= =3DArial=20 color=3D#808080 size=3D1>Dr Ian McDonald</FONT> <BR><FONT face=3DArial = color=3D#808080=20 size=3D1>Software Engineer, Interactive Drama & Entertainment</FONT= >=20 <BR><FONT face=3DArial color=3D#808080 size=3D1>Conquer the Earth! - Th= e Doctor Who=20 monsters game</FONT> <BR><FONT face=3DArial color=3D#808080 size=3D1>Th= e Rome Game:=20 Do as the Romans do. Lie, cheat, and steal.</FONT> <BR><FONT face=3DAri= al=20 color=3D#808080 size=3D1>A300, 56-58 Wood Lane (CH), London W12 7SB</FO= NT>=20 <BR><FONT face=3DArial color=3D#808080 size=3D1>020 822 56162</FONT> <B= R><FONT=20 face=3DArial color=3D#808080 size=3D1>ian.mcdonald@xxx.xx.xx / "Ian McD= onald-ONLINE"=20 (not "Ian MacDonald")</FONT> </P><BR><BR>http://www.bbc.co.uk/ - World = Wide=20 Wonderland<BR><BR>This e-mail (and any attachments) is confidential and= may=20 contain<BR>personal views which are not the views of the BBC unless=20 specifically<BR>stated.<BR>If you have received it in error, please del= ete it=20 from your system. <BR>Do not use, copy or disclose the information in a= ny way=20 nor act in<BR>reliance on it and notify the sender immediately. Please = note=20 that the<BR>BBC monitors e-mails sent or received. <BR>Further communic= ation=20 will signify your consent to this. </BLOCKQUOTE><br>http://www.bbc.co.u= k/ - World Wide Wonderland<br><br>This e-mail (and any attachments) is co= nfidential and may contain<br>personal views which are not the views of t= he BBC unless specifically<br>stated.<br>If you have received it in error= , please delete it from your system. <br>Do not use, copy or disclose the= information in any way nor act in<br>reliance on it and notify the sende= r immediately. Please note that the<br>BBC monitors e-mails sent or recei= ved. <br>Further communication will signify your consent to this.</BODY><= /HTML> ------_=_NextPart_001_01C47635.92177DA6--
RE: $self->primary_column() fails catastrophically within Class::DBI::_create.
|
Generated at 11:34 on 01 Dec 2004 by mariachi v0.52