PHP  
 PHP_7_1
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

==10603== Invalid read of size 4
==10603==    at 0x5F3DA82: ??? (in /usr/lib64/libfbclient.so.2.5.7)
==10603==    by 0x5F2F759: isc_database_info (in /usr/lib64/libfbclient.so.2.5.7)
==10603==    by 0x8896AE: _php_ibase_free_stmt_handle (ibase_query.c:127)
==10603==    by 0x8897E6: _php_ibase_free_result (ibase_query.c:148)
==10603==    by 0x102C4D1: zend_resource_dtor (zend_list.c:76)
==10603==    by 0x102CC55: list_entry_destructor (zend_list.c:187)
==10603==    by 0x101EDAF: _zend_hash_del_el_ex (zend_hash.c:997)
==10603==    by 0x101EDAF: zend_hash_index_del (zend_hash.c:1210)
==10603==    by 0x102C3B7: zend_list_free (zend_list.c:59)
==10603==    by 0xFE3676: _zval_dtor_func (zend_variables.c:63)
==10603==    by 0x11BD5E2: zend_assign_to_variable (zend_execute.h:104)
==10603==    by 0x11BD5E2: ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER (zend_vm_execute.h:41187)
==10603==    by 0x10C8C22: execute_ex (zend_vm_execute.h:432)
==10603==    by 0x10C986F: zend_execute (zend_vm_execute.h:474)
==10603==  Address 0x1509f3e0 is 0 bytes inside a block of size 32 free'd
==10603==    at 0x4C28BD4: free (vg_replace_malloc.c:529)
==10603==    by 0xF843BD: _efree (zend_alloc.c:2444)
==10603==    by 0x885A5C: _php_ibase_close_link (interbase.c:643)
==10603==    by 0x102C4D1: zend_resource_dtor (zend_list.c:76)
==10603==    by 0x102C5A9: zend_list_close (zend_list.c:89)
==10603==    by 0x887D49: zif_ibase_close (interbase.c:1072)
==10603==    by 0x10CB538: ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER (zend_vm_execute.h:628)
==10603==    by 0x10C8C22: execute_ex (zend_vm_execute.h:432)
==10603==    by 0x10C986F: zend_execute (zend_vm_execute.h:474)
==10603==    by 0xFEB9B0: zend_execute_scripts (zend.c:1482)
==10603==    by 0xEDF990: php_execute_script (main.c:2577)
==10603==    by 0x123291D: do_cli (php_cli.c:993)
==10603==  Block was alloc'd at
==10603==    at 0x4C291FA: malloc (vg_replace_malloc.c:298)
==10603==    by 0xF85A17: __zend_malloc (zend_alloc.c:2838)
==10603==    by 0xF7F172: _emalloc_32 (zend_alloc.c:2352)
==10603==    by 0x887568: _php_ibase_connect (interbase.c:988)
==10603==    by 0x887B8D: zif_ibase_connect (interbase.c:1037)
==10603==    by 0x10CBA0A: ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER (zend_vm_execute.h:675)
==10603==    by 0x10C8C22: execute_ex (zend_vm_execute.h:432)
==10603==    by 0x10C986F: zend_execute (zend_vm_execute.h:474)
==10603==    by 0xFEB9B0: zend_execute_scripts (zend.c:1482)
==10603==    by 0xEDF990: php_execute_script (main.c:2577)
==10603==    by 0x123291D: do_cli (php_cli.c:993)
==10603==    by 0x12342C4: main (php_cli.c:1381)
==10603== 

 

Generated at Fri, 01 Dec 2017 18:56:15 +0000 (14 days ago)

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