Skip to content
This repository has been archived by the owner on Feb 21, 2019. It is now read-only.

Segmentation faults -- possibly caused by argument passing during worker creation #8

Open
jackdpeterson opened this issue Aug 30, 2015 · 0 comments

Comments

@jackdpeterson
Copy link

For some reason, php is seg faulting when registering a worker.

system specs: Ubuntu 14.04

$ php --ri gearman
gearman support => enabled
extension version => 1.1.2
libgearman version => 1.0.6
Default TCP Host => localhost
Default TCP Port => 4730

$php -v
PHP 5.6.12-1+deb.sury.org~trusty+1 (cli)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

public function pollWorkeraction()
{
require_once(DIR . '/../Gearman/GlobalWorkerFunctions.php');
$gearman = $this->getServiceLocator()->get('mwGearman\Worker\Pecl');
$gearman->register("persistent_search_poll", "gearman_worker_poll");
$gearman->connect();
//while ($gearman->work());
}

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Traceback (most recent call last):
File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in
from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'
[New Thread 0x7fffe9d57700 (LWP 30747)]
[Thread 0x7fffe9d57700 (LWP 30747) exited]

Program received signal SIGSEGV, Segmentation fault.
0x0000000000706ff0 in zend_object_store_get_object ()
(gdb) bt
#0 0x0000000000706ff0 in zend_object_store_get_object ()
#1 0x00007fffee31186a in zif_gearman_worker_register (ht=, return_value=0x1f028e8,

return_value_ptr=<optimized out>, this_ptr=<optimized out>, return_value_used=<optimized out>)
at /tmp/pear/temp/gearman/php_gearman.c:3454

Looking into this a little more, there appears to be some weirdness with the way that the callback is being handled -- and I'm not sure if it is specific to this module or if there is an actual problem with the extension:

/* *job is passed in via gearman, need to convert that into a zval that

  • is accessable in the user_defined php callback function */
    static void *_php_worker_function_callback(gearman_job_st *job, void *context,
    size_t *result_size,
    gearman_return_t *ret_ptr) {

... going down to 3454 yields the following assignment. Unfortunately, I'm not sure where to take this at this point other than assume that Net_Gearman is going to be potentially more stable at this stage of the game.

fci.params= argv;
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant