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

==6708== Invalid read of size 4
==6708==    at 0x65F7A82: ??? (in /usr/lib64/libfbclient.so.2.5.7)
==6708==    by 0x65E9759: isc_database_info (in /usr/lib64/libfbclient.so.2.5.7)
==6708==    by 0x79C130: _php_ibase_free_stmt_handle (ibase_query.c:127)
==6708==    by 0x79C26F: _php_ibase_free_result (ibase_query.c:148)
==6708==    by 0x102A02D: zend_resource_dtor (zend_list.c:74)
==6708==    by 0x102A7AB: list_entry_destructor (zend_list.c:185)
==6708==    by 0x101B95B: _zend_hash_del_el_ex (zend_hash.c:1246)
==6708==    by 0x101B95B: zend_hash_index_del (zend_hash.c:1457)
==6708==    by 0x1029EE8: zend_list_free (zend_list.c:57)
==6708==    by 0xFE3A2C: rc_dtor_func (zend_variables.c:53)
==6708==    by 0x11E5C86: zend_assign_to_variable (zend_execute.h:108)
==6708==    by 0x11E5C86: ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER (zend_vm_execute.h:45185)
==6708==    by 0x122DB45: execute_ex (zend_vm_execute.h:59583)
==6708==    by 0x1230790: zend_execute (zend_vm_execute.h:60223)
==6708==  Address 0x15ff0710 is 0 bytes inside a block of size 32 free'd
==6708==    at 0x4C28BD4: free (vg_replace_malloc.c:529)
==6708==    by 0xF7C850: _efree (zend_alloc.c:2497)
==6708==    by 0x79852B: _php_ibase_close_link (interbase.c:643)
==6708==    by 0x102A02D: zend_resource_dtor (zend_list.c:74)
==6708==    by 0x102A110: zend_list_close (zend_list.c:87)
==6708==    by 0x79A6C0: zif_ibase_close (interbase.c:1065)
==6708==    by 0x1208286: ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER (zend_vm_execute.h:655)
==6708==    by 0x1208286: execute_ex (zend_vm_execute.h:54819)
==6708==    by 0x1230790: zend_execute (zend_vm_execute.h:60223)
==6708==    by 0xFEBDCB: zend_execute_scripts (zend.c:1608)
==6708==    by 0xED9F70: php_execute_script (main.c:2643)
==6708==    by 0x1236556: do_cli (php_cli.c:997)
==6708==    by 0x1238014: main (php_cli.c:1390)
==6708==  Block was alloc'd at
==6708==    at 0x4C291FA: malloc (vg_replace_malloc.c:298)
==6708==    by 0xF8058A: __zend_malloc (zend_alloc.c:2893)
==6708==    by 0xF77668: _emalloc_32 (zend_alloc.c:2410)
==6708==    by 0x799FA2: _php_ibase_connect (interbase.c:988)
==6708==    by 0x79A507: zif_ibase_connect (interbase.c:1030)
==6708==    by 0x1208822: ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER (zend_vm_execute.h:700)
==6708==    by 0x1208822: execute_ex (zend_vm_execute.h:54823)
==6708==    by 0x1230790: zend_execute (zend_vm_execute.h:60223)
==6708==    by 0xFEBDCB: zend_execute_scripts (zend.c:1608)
==6708==    by 0xED9F70: php_execute_script (main.c:2643)
==6708==    by 0x1236556: do_cli (php_cli.c:997)
==6708==    by 0x1238014: main (php_cli.c:1390)
==6708== 

 

Generated at Tue, 06 Nov 2018 09:43:32 +0000 (11 days ago)

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