|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #63176 Segmentation fault when instantiate 2 persistent PDO to the same db server
Submitted: 2012-09-28 02:10 UTC Modified: 2013-06-16 15:02 UTC
Avg. Score:4.6 ± 0.5
Reproduced:5 of 5 (100.0%)
Same Version:3 (60.0%)
Same OS:4 (80.0%)
From: jrbasso at gmail dot com Assigned: wez
Status: Closed Package: PDO related
PHP Version: 5.4.7 OS: Ubunt 12.04.1
Private report: No CVE-ID:
 [2012-09-28 02:10 UTC] jrbasso at gmail dot com
Download the PHP version 5.4.7, compiled with ./configure --enable-debug --with-
pdo-mysql --enable-pcntl

Run the test script and it gives a segmentation fault when the script finish. If 
I remove the attribute from PDO2 it works fine. If the persistent option is 
disabled it works fine too.

gdb backtrace available on

Test script:

class PDO2 extends PDO {
	protected $transLevel;

class ModelA {
	public function __construct() {
		$this->db = new PDO2('mysql:host=localhost', 'root', 'root', array(PDO::ATTR_PERSISTENT => true));
		$this->db->query('SELECT 1')->fetchAll();

$a = new ModelA();
$b = new ModelA();

Expected result:
No segmentation fault

Actual result:
Segmentation fault (core dumped)


bug63176.patch (last revision 2012-09-28 02:47 UTC) by

Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2012-09-28 02:47 UTC]
The following patch has been added/updated:

Patch Name: bug63176.patch
Revision:   1348800472
 [2012-09-28 02:55 UTC]
@wez, could you please look at this? the attached patch indicated where the 
problem came from. :)

 [2012-09-28 02:55 UTC]
-Assigned To: +Assigned To: wez
 [2012-09-28 13:22 UTC] cjsaylor at gmail dot com
After looking at the patch, is denying persistent connections from derived PDO 
classes the actual proposed solution?  Not being able to extend \PDO with 
persistent connections would be a problem in many frameworks/appliances.
 [2012-09-28 13:37 UTC] jrbasso at gmail dot com
I tested in my PHP 5.3.15 and the issue doesn't happen. It just happen in PHP 
 [2013-06-14 13:16 UTC] thz at plista dot com
Hi, we are experiencing the same error and it's preventing us from moving to PHP 
5.4. Are there any plans to fix this or are we going to have to live with not 
being able to derive from PDO?

We have done extensive debugging and may be able to provide some information as 
to why this happens, but due to a lack of internal knowledge of how the Zend 
engine works, we haven't been able to come up with a fix.
 [2013-06-14 19:31 UTC] jrbasso at gmail dot com
@thz, the workaround I did was to create 2 DNS names for the same DB. So PHP will 
think they are 2 different servers and connect twice.
 [2013-06-16 14:57 UTC]
Automatic comment on behalf of laruence
Log: Fixed bug #63176 (Segmentation fault when instantiate 2 persistent PDO to the same db server)
 [2013-06-16 14:57 UTC]
-Status: Assigned +Status: Closed
 [2013-06-16 15:01 UTC]
bug has been fixed, will behavior like 5.3

but it's a little weird that's two different drived class will share one same dbh, 
and the dbh hold only one drived  class instance.

see the test script I committed:

note the result are all PDO2.... 

maybe we should also add the drived class name into the persistent id? 

 [2013-06-16 15:02 UTC]
@wez what do you think? thanks
 [2013-06-17 08:38 UTC] tj dot botha at plista dot com
Hey guys - thanks very much for fixing this! I pulled 
1143f58a7094ed9a4960bfb714fa2773dda7c704 this morning and confirm we're also no 
longer segfaulting.

PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Sun Apr 20 03:02:42 2014 UTC