awesomized / libmemcached

Resurrection of libmemcached
https://awesomized.github.io/libmemcached/
BSD 3-Clause "New" or "Revised" License
45 stars 26 forks source link

Assertion `memcached_failed(rc)' failed in memcached_send_ascii #49

Closed m6w6 closed 3 years ago

m6w6 commented 4 years ago

Imported from Launchpad using lp2gh.


I can reproduce that on ubuntu 14.04 with php-5.5.9-1ubuntu4.2, php-memcached-2.1.0 and libmemached-1.0.8:

php: libmemcached/storage.cc:341: memcached_return_t memcached_send_ascii(memcached_st*, memcached_server_write_instance_st, const char*, size_t, const char*, size_t, time_t, uint32_t, uint64_t, bool, bool, memcached_storage_action_t): Assertion `memcached_failed(rc)' failed.

Also on gentoo with php-5.5.14, php-memcached-2.1.0 (and 2.2.0 too) and libmemached-1.0.18:

php: libmemcached/storage.cc:343: memcached_return_t memcached_send_ascii(Memcached*, memcached_instance_st*, const char*, size_t, const char*, size_t, time_t, uint32_t, uint64_t, bool, bool, memcached_storage_action_t): Assertion `memcached_failed(rc)' failed.

But I can't reproduce that on mac with php-5.5.14, php-memcached-2.1.0 and libmemcached-1.0.18. That's weird.

Good part is: I have a test-case:

mctest.php:

<?php

$M = new Memcached();
$M->addServers(array(array(
    'host' => '127.0.0.1',
    'port' => 12344,
)));

$f = fopen('mc.log.short', 'r');
$i = 0;
while ($line = fgets($f)) {
    $i++;

    echo $i.': '.$line;

    $line = json_decode($line);
    list($cmd, $args) = $line;

    if ($cmd == 'get') {
        unset($args[2]); // unset cas which is passed by reference
    }

    if ($cmd == 'cas') {
        $args = array_slice($args, 0, 4); // extra arg is some legacy
    }

    call_user_func_array(array($M, $cmd), $args);
}

And mc.log.short:

["add",["TestlockTestlib:type_Memcaches.id_default",true,600]]
["add",["Lock:upl_21",1358150402000000,86400]]
["get",["Lock:upl_21",null,null]]
["getResultCode",[]]
["cas",[2298,"Lock:upl_21",-1,1358150395]]
["add",["Lock:upl_21",1358150402000000,86400]]
["get",["Lock:upl_21",null,null]]
["getResultCode",[]]
["cas",[2300,"Lock:upl_21",-1,1358150395]]
["add",["Lock:upl_21",1358150402000000,86400]]
["get",["Lock:upl_21",null,null]]
["getResultCode",[]]
["cas",[2302,"Lock:upl_21",-1,1358150395]]
["get",["UserAppFriends_21",null,null]]
["add",["Lock:upl_22",1358150402000000,86400]]
["get",["Lock:upl_22",null,null]]
["getResultCode",[]]
["cas",[2304,"Lock:upl_22",-1,1358150395]]
["add",["Lock:upl_22",1358150402000000,86400]]
["get",["Lock:upl_22",null,null]]
["getResultCode",[]]
["cas",[2306,"Lock:upl_22",-1,1358150395]]
["add",["Lock:upl_23",1358150402000000,86400]]
["get",["Lock:upl_23",null,null]]
["getResultCode",[]]
["cas",[2308,"Lock:upl_23",-1,1358150395]]
["add",["Lock:upl_23",1358150402000000,86400]]
["get",["Lock:upl_23",null,null]]
["getResultCode",[]]
["cas",[2310,"Lock:upl_23",-1,1358150395]]
["add",["Lock:upl_24",1358150402000000,86400]]
["get",["Lock:upl_24",null,null]]
["getResultCode",[]]
["cas",[2312,"Lock:upl_24",-1,1358150395]]
["add",["Lock:upl_24",1358150402000000,86400]]
["get",["Lock:upl_24",null,null]]
["getResultCode",[]]
["cas",[2314,"Lock:upl_24",-1,1358150395]]
["add",["Lock:upl_25",1358150402000000,86400]]
["get",["Lock:upl_25",null,null]]
["getResultCode",[]]
["cas",[2316,"Lock:upl_25",-1,1358150395]]
["add",["Lock:upl_25",1358150402000000,86400]]
["get",["Lock:upl_25",null,null]]
["getResultCode",[]]
["cas",[2318,"Lock:upl_25",-1,1358150395]]
["add",["Lock:upl_25",1358150402000000,86400]]
["get",["Lock:upl_25",null,null]]
["getResultCode",[]]
["cas",[2320,"Lock:upl_25",-1,1358150395]]
["get",["UserAppFriends_25",null,null]]
["add",["Lock:upl_26",1358150402000000,86400]]
["get",["Lock:upl_26",null,null]]
["getResultCode",[]]
["cas",[2322,"Lock:upl_26",-1,1358150395]]
["add",["Lock:upl_26",1358150402000000,86400]]
["get",["Lock:upl_26",null,null]]
["getResultCode",[]]
["cas",[2324,"Lock:upl_26",-1,1358150395]]
["get",["UserAppFriends_26",null,null]]
["add",["Lock:upl_27",1358150402000000,86400]]
["get",["Lock:upl_27",null,null]]
["getResultCode",[]]
["cas",[2326,"Lock:upl_27",-1,1358150395]]
["add",["Lock:upl_27",1358150402000000,86400]]
["get",["Lock:upl_27",null,null]]
["getResultCode",[]]
["cas",[2328,"Lock:upl_27",-1,1358150395]]
["get",["UserAppFriends_27",null,null]]
["add",["Lock:FeatureGroupSaving",1358150405000000,86400]]
["get",["Lock:FeatureGroupSaving",null,null]]
["getResultCode",[]]
["cas",[2330,"Lock:FeatureGroupSaving",-1,1358150395]]
["get",["s_1a31843e698de9ee25ee56866aec3e6e",null,null]]
["delete",["s_1a31843e698de9ee25ee56866aec3e6e"]]
["get",["s_967daed789c8c524bc05b5d20338e3ea",null,null]]
["delete",["s_967daed789c8c524bc05b5d20338e3ea"]]
["get",["s_e891f4cbd4690cae9febd7b9b4367487",null,null]]
["delete",["s_e891f4cbd4690cae9febd7b9b4367487"]]
["get",["s_bc934e351a03d0dc1bac187724f31dc2",null,null]]
["cas",[0,"s_bc934e351a03d0dc1bac187724f31dc2",{"user_id":21,"token_csrf":859884505},3600,true]]
["getResultCode",[]]
["delete",["TestlockTestlib:type_CentralDatabase.id_default"]]
["delete",["TestlockTestlib:type_AllDbSpots.id_default"]]
["delete",["TestlockTestlib:type_Authorizer.id_default"]]
["delete",["TestlockTestlib:type_Memcaches.id_default"]]
["add",["TestlockTestlib:type_CentralDatabase.id_default",true,600]]
["get",["s_4354ac7f7a1c65fc701fb11cfc05235e",null,null]]
["get",["s_8cd4ca8a9b6a983b3fd7214876ab73cb",null,null]]
["get",["included_files_bobrov.pretender.local_3abcd49fa0a0a6708c64c4f28f4afa661c77ac56",null,null]]
["get",["included_files_bobrov.pretender.local_875dfb50a3599435113f0b5ab12d5d7463317675",null,null]]
["add",["s_8cd4ca8a9b6a983b3fd7214876ab73cb",{"user_agent":"check_http\/v1.4.16 (nagios-plugins 1.4.16)"},3600,true]]
["get",[["spot_3",null,null],null,null]]
["get",[["spot_3",null,null],null,null]]
["get",[["spot_3",null,null],null,null]]

It fails on line 87 currently.

m6w6 commented 4 years ago

The ADD on line 87 should return NOT_STORED, so the assertion should pass. Maybe related to php-memcached. Needs investigation.