PHP  
 PHP_HEAD
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

Valgrind Report for ext/interbase/tests/005.phpt ('InterBase: transactions')

Script

1: <?php
2:
3:     
require("interbase.inc");
4:     
5:     
ibase_connect($test_base);
6:
7:     @
ibase_query("create table test5 (i integer)");
8:     @
ibase_query("delete from test5");
9:     
ibase_close();
10:
11:
12:     echo 
"default transaction:\n";
13:     
14:
/*
15: Difference between default and other transactions:
16: default committed when you call  ibase_close().
17: Other transaction doing rollback.
18:
19: If you not open default transaction with
20: ibase_trans, default transaction open
21: when you call ibase_query(), ibase_prepare(),
22: ibase_blob_create(), ibase_blob_import()  first time.
23: */
24:
25: /*
26: simple default transaction test without ibase_trans()
27: */
28:     
29:     
ibase_connect($test_base);
30:
31:     echo 
"empty table\n";
32:
33:     
/*  out_table call ibase_query()
34:       and ibase_query() start default transaction */
35:     
out_table("test5");   
36:
37:     
/* in default transaction context */
38:     
ibase_query("insert into test5 (i) values (1)");
39:
40:     echo 
"one row\n";
41:     
out_table("test5");
42:
43:     
ibase_rollback(); /* default rolled */
44:
45:     
echo "after rollback table empty again\n";
46:     
out_table("test5");  /* started new default transaction */
47:     
48:     
ibase_query("insert into test5 (i) values (2)");
49:
50:     
ibase_close(); /* commit here! */
51:     
52:     
ibase_connect($test_base);
53:     
54:     echo 
"one row\n";
55:     
out_table("test5");
56:     
ibase_close();
57:
58:
/*
59: default transaction on default link
60: First open transaction on link will be default.
61: $tr_def_l1 may be omitted. All queryes without link and trans
62: parameters run in this context
63: */
64:     
65:     
$link_def ibase_connect($test_base);
66:     
67:     
$tr_def_l1 ibase_trans(IBASE_READ); /* here transaction start */
68:     
69:     /* all default */
70:     
$res ibase_query("select * from test5");
71:     
72:     echo 
"one row\n";
73:     
out_result($res,"test5");
74:
75:     
ibase_free_result($res);
76:
77:     
/* specify transaction context...  */
78:     
$res ibase_query($tr_def_l1"select * from test5");
79:     
80:     echo 
"one row... again.\n";
81:     
out_result($res,"test5");
82:
83:     
ibase_free_result($res);
84:     
85:     
/* specify default transaction on link  */
86:     
$res ibase_query($link_def"select * from test5");
87:     
88:     echo 
"one row.\n";
89:     
out_result($res,"test5");
90:
91:     
ibase_free_result($res);
92:
93:     
ibase_rollback($link_def); /* just for example */
94:
95:     
ibase_close();
96:     
97:
/*
98: three transaction on default link
99: */
100:     
ibase_connect($test_base);
101:     
102:     
$res ibase_query("select * from test5");
103:     
104:     echo 
"one row\n";
105:     
out_result($res,"test5");
106:
107:     
ibase_free_result($res);
108:
109:     
$tr_1 ibase_query("SET TRANSACTION");
110:     
$tr_2 ibase_query("SET TRANSACTION READ ONLY");
111:     
$tr_3 ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_VERSION+IBASE_WAIT);    
112:     
$tr_4 ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_NO_VERSION+IBASE_NOWAIT);    
113:     
114:     
/* insert in first transaction context...  */
115:     /* as default */
116:     
ibase_query("insert into test5 (i) values (3)");
117:     
/* specify context */
118:     
ibase_query($tr_1"insert into test5 (i) values (4)");
119:     
120:     
$res ibase_query("select * from test5");
121:     
122:     echo 
"two rows\n";
123:     
out_result($res,"test5");
124:
125:     
ibase_free_result($res);
126:     
127:     
$res ibase_query($tr_1"select * from test5");
128:     
129:     echo 
"two rows again\n";
130:     
out_result($res,"test5");
131:
132:     
ibase_free_result($res);
133:     
134:     
ibase_commit();
135:     
ibase_commit($tr_1);
136:
137:     
$tr_1 ibase_trans();
138:        
ibase_query($tr_1"insert into test5 (i) values (5)");
139:     
140:     
/* tr_2 is IBASE_READ + IBASE_CONCURRENCY + IBASE_WAIT */
141:     
$res ibase_query($tr_2"select * from test5");
142:     
143:     echo 
"one row in second transaction\n";
144:     
out_result($res,"test5");
145:
146:     
ibase_free_result($res);
147:
148:     
/* tr_3 is IBASE_COMMITTED + IBASE_REC_VERSION + IBASE_WAIT */
149:     
$res ibase_query($tr_3"select * from test5");
150:     
151:     echo 
"three rows in third transaction\n";
152:     
out_result($res,"test5");
153:
154:     
ibase_free_result($res);
155:
156:      
/* tr_4 IBASE_COMMITTED + IBASE_REC_NO_VERSION + IBASE_NOWAIT */
157:      
$res ibase_query($tr_4"select * from test5");
158:    
159:       echo 
"three rows in fourth transaction with deadlock\n";
160:     
out_result_trap_error($res,"test5");
161:
162:     
ibase_free_result($res); 
163:  
164:      
ibase_rollback($tr_1);
165:     
ibase_close();
166:
/*
167: transactions on second link
168: */
169:     
$link_1 ibase_pconnect($test_base);
170:     
$link_2 ibase_pconnect($test_base);
171:     
172:     
$tr_1 ibase_trans(IBASE_DEFAULT$link_2);  /* this default transaction also */
173:     
$tr_2 ibase_trans(IBASE_COMMITTED$link_2);
174:     
175:     
$res ibase_query($tr_1"select * from test5");
176:     
177:     echo 
"three rows\n";
178:     
out_result($res,"test5");
179:
180:     
ibase_free_result($res);
181:
182:     
ibase_query($tr_1"insert into test5 (i) values (5)");
183:     
184:     
$res ibase_query($tr_1"select * from test5");
185:     
186:     echo 
"four rows\n";
187:     
out_result($res,"test5");
188:
189:     
ibase_free_result($res);
190:     
191:     
ibase_commit($tr_1);
192:     
193:     
$res ibase_query($tr_2"select * from test5");
194:     
195:     echo 
"four rows again\n";
196:     
out_result($res,"test5");
197:
198:     
ibase_free_result($res);
199:     
200:     
ibase_close($link_1);
201:     
ibase_close($link_2);
202:
203:     echo 
"end of test\n";
204:
?>
205:

Report

==15469== Invalid read of size 4
==15469==    at 0x5F3DA82: ??? (in /usr/lib64/libfbclient.so.2.5.7)
==15469==    by 0x5F2F759: isc_database_info (in /usr/lib64/libfbclient.so.2.5.7)
==15469==    by 0x8E17C2: _php_ibase_free_stmt_handle (ibase_query.c:127)
==15469==    by 0x8E18FA: _php_ibase_free_result (ibase_query.c:148)
==15469==    by 0x1120A31: zend_resource_dtor (zend_list.c:76)
==15469==    by 0x11211B5: list_entry_destructor (zend_list.c:187)
==15469==    by 0x111285F: _zend_hash_del_el_ex (zend_hash.c:996)
==15469==    by 0x111285F: zend_hash_index_del (zend_hash.c:1209)
==15469==    by 0x1120917: zend_list_free (zend_list.c:59)
==15469==    by 0x10D6DF2: _zval_dtor_func (zend_variables.c:63)
==15469==    by 0x12C0887: zend_assign_to_variable (zend_execute.h:106)
==15469==    by 0x12C0887: ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER (zend_vm_execute.h:39072)
==15469==    by 0x1339863: execute_ex (zend_vm_execute.h:59726)
==15469==    by 0x1339EDB: zend_execute (zend_vm_execute.h:63763)
==15469==  Address 0x14f6ccf0 is 0 bytes inside a block of size 32 free'd
==15469==    at 0x4C28BD4: free (vg_replace_malloc.c:529)
==15469==    by 0x1076214: _efree (zend_alloc.c:2428)
==15469==    by 0x8DDB90: _php_ibase_close_link (interbase.c:643)
==15469==    by 0x1120A31: zend_resource_dtor (zend_list.c:76)
==15469==    by 0x1120B09: zend_list_close (zend_list.c:89)
==15469==    by 0x8DFE5F: zif_ibase_close (interbase.c:1075)
==15469==    by 0x11BD4EB: ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER (zend_vm_execute.h:573)
==15469==    by 0x1339863: execute_ex (zend_vm_execute.h:59726)
==15469==    by 0x1339EDB: zend_execute (zend_vm_execute.h:63763)
==15469==    by 0x10DF02D: zend_execute_scripts (zend.c:1494)
==15469==    by 0xFD0CE5: php_execute_script (main.c:2566)
==15469==    by 0x133FA79: do_cli (php_cli.c:1011)
==15469==  Block was alloc'd at
==15469==    at 0x4C291FA: malloc (vg_replace_malloc.c:298)
==15469==    by 0x10777DB: __zend_malloc (zend_alloc.c:2811)
==15469==    by 0x1070FC9: _emalloc_32 (zend_alloc.c:2336)
==15469==    by 0x8DF67E: _php_ibase_connect (interbase.c:991)
==15469==    by 0x8DFCA3: zif_ibase_connect (interbase.c:1040)
==15469==    by 0x11BD9D3: ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER (zend_vm_execute.h:617)
==15469==    by 0x1339863: execute_ex (zend_vm_execute.h:59726)
==15469==    by 0x1339EDB: zend_execute (zend_vm_execute.h:63763)
==15469==    by 0x10DF02D: zend_execute_scripts (zend.c:1494)
==15469==    by 0xFD0CE5: php_execute_script (main.c:2566)
==15469==    by 0x133FA79: do_cli (php_cli.c:1011)
==15469==    by 0x134142D: main (php_cli.c:1404)
==15469== 

 

Generated at Sat, 09 Sep 2017 03:10:54 +0000 (13 days ago)

Copyright © 2005-2017 The PHP Group
All rights reserved.