php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #54427 Segfault when emiting custom signal with object parameter
Submitted: 2011-03-30 19:01 UTC Modified: 2012-12-10 18:12 UTC
From: ptlis at ptlis dot net Assigned: auroraeosrose (profile)
Status: Closed Package: PHP-GTK related
PHP Version: 5.3.6 OS: Ubuntu 10.4
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: ptlis at ptlis dot net
New email:
PHP Version: OS:

 

 [2011-03-30 19:01 UTC] ptlis at ptlis dot net
Description:
------------
The first time the OK button on the dialog is clicked the custom signal is emitted correctly, on the second click php segfaults on the call to emit().

If no object is provided to emit() the second signal emits without segfault as expected.

Test script:
---------------
<?php

/**	Class implements custom signal 'product-ready'. */
	class customDialog extends GtkDialog {
	    public $__gsignals	= array(
            		'product-ready'  => array(
	    				GObject::SIGNAL_RUN_LAST,
	    				GObject::TYPE_BOOLEAN,
	    				array(
	    					GObject::TYPE_PHP_VALUE
	    				)
	    			)
				);

		public function __construct($title, GtkWindow $parent) {
			parent::__construct($title, $parent, Gtk::DIALOG_MODAL);

			$product	= new stdClass();

			$okButton	= new GtkButton('OK');
			$this->action_area->add($okButton);
			$okButton->connect_simple('clicked', array($this, 'ok_clicked'), $product);
		}

		public function ok_clicked(stdClass $product) {
			$this->emit('product-ready', $product);
		}
	}
	GObject::register_type('customDialog');



	$window	= new GtkWindow();
	$window->show_all();

	$dialog	= new customDialog('fire signal dialog', $window);
	$dialog->show_all();

	$dialog->connect('product-ready', 'product_ready');

	function product_ready() {
		echo 'segfaults on second signal' . "\n";
		return true;
	}

	Gtk::main();


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2012-07-18 20:04 UTC] auroraeosrose@php.net
-Status: Open +Status: Feedback
 [2012-07-18 20:04 UTC] auroraeosrose@php.net
Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php

If you can provide more information, feel free to add it
to this bug and change the status back to "Open".

Thank you for your interest in PHP.


I can't reproduce this with the current version in git on 5.3 or 5.4

Can you try a newer compile of php-gtk?  Also what gtk library version are you using, and are you using Ubuntu distro builds of php - if so please try with a stock build of PHP
 [2012-08-26 11:39 UTC] ptlis at ptlis dot net
I can reproduce this on clean installations of Ubuntu 10.04 & 12.04 with the following procedures (slight changes due to package name changes etc)

Ubuntu 10.04: http://pastebin.com/vHuHDc3R
Ubuntu 12.04: http://pastebin.com/gB0LRAkE
 [2012-08-26 11:39 UTC] ptlis at ptlis dot net
-Status: Feedback +Status: Open
 [2012-08-26 11:43 UTC] ptlis at ptlis dot net
Oh, I forgot the gtk versions, dpkg reports

Ubuntu 10.04: 2.20.1-0ubuntu2.1
Ubuntu 12.04: 2.24.10-0ubuntu6 & 3.4.2-0ubuntu0.4
 [2012-12-10 18:12 UTC] auroraeosrose@php.net
The fix for this bug has been committed.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.

 For Windows:

http://windows.php.net/snapshots/
 
Thank you for the report, and for helping us make PHP better.


 [2012-12-10 18:12 UTC] auroraeosrose@php.net
-Status: Open +Status: Closed -Assigned To: +Assigned To: auroraeosrose
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 20:01:28 2024 UTC