Hello, The DBD::Oracle 1.26 code
http://cpansearch.perl.org/src/TIMB/DBD-Oracle-1.26/oci8.c declares char new_tablename[100]; in the if branch in init_lob_refetch, and then assigns tablename=new_tablename; and then uses the tablename outside of that if block. So the tablename pointer points to a random address on the stack. It causes problems described at http://rt.cpan.org/Public/Bug/Display.html?id=61511 https://bugzilla.redhat.com/show_bug.cgi?id=548489 Note that it's kinda related to http://rt.cpan.org/Public/Bug/Display.html?id=36069#txn-464638 where it's said Used some of the code form the patch there was no need to create a char [100] outside the if statement though. I'd claim that it is actually necessary to declare it outside of that block because even if the name goes out of scope at the end of the block, the tablename pointer still points to it. Please apply --- oci8.c.orig 2010-11-16 16:26:42.459208675 +0100 +++ oci8.c 2010-11-16 16:27:27.194207404 +0100 @@ -4030,6 +4030,7 @@ ub2 numcols = 0; imp_fbh_t *fbh; int unmatched_params; + char new_tablename[100]; I32 i,j; char *p; lob_refetch_t *lr = NULL; @@ -4067,7 +4068,6 @@ if (status == OCI_SUCCESS) { /* There is a synonym, get the schema */ char *syn_schema=NULL; char syn_name[100]; - char new_tablename[100]; ub4 tn_len = 0, syn_schema_len = 0; strncpy(syn_name,tablename,strlen(tablename)); to DBD::Oracle. Thank you, -- Jan Pazdziora