Skip to content

bug: spanner emulator max call stack size exceeded #2152

@marcobuschini

Description

@marcobuschini

I'm having trouble using Spanner Emulator with PHP so to investigate the problem I configured my Spanner Emulator instance so that it works when running queries from the command line. Then I cloned this repository, configured the code to run on my emulator instance, and run the quickstart.php file. It returned the following stack trace where on line 4 you can see the stack size problem:

WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1756808553.589133    7237 call_credentials.c:168] GRPC_PHP: call credentials plugin function - begin
I0000 00:00:1756808553.589553    7237 call_credentials.c:171] GRPC_PHP: call credentials plugin function - end
PHP Fatal error:  Uncaught Error: Maximum call stack size of 68719427584 bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion? in /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/CredentialsWrapper.php:244
Stack trace:
#0 [internal function]: Google\ApiCore\CredentialsWrapper->Google\ApiCore\{closure}()
#1 /home/marcobuschini/src/php-docs-samples/spanner/vendor/grpc/grpc/src/lib/UnaryCall.php(45): Grpc\Call->startBatch()
#2 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/grpc-gcp/src/GCPUnaryCall.php(48): Grpc\UnaryCall->start()
#3 /home/marcobuschini/src/php-docs-samples/spanner/vendor/grpc/grpc/src/lib/BaseStub.php(295): Grpc\Gcp\GCPUnaryCall->start()
#4 /home/marcobuschini/src/php-docs-samples/spanner/vendor/grpc/grpc/src/lib/BaseStub.php(545): Grpc\BaseStub->Grpc\{closure}()
#5 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/Transport/GrpcTransport.php(267): Grpc\BaseStub->_simpleRequest()
#6 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/GapicClientTrait.php(664): Google\ApiCore\Transport\GrpcTransport->startUnaryCall()
#7 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/Middleware/CredentialsWrapperMiddleware.php(60): Google\Cloud\Spanner\V1\Gapic\SpannerGapicClient->Google\ApiCore\{closure}()
#8 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/Middleware/FixedHeaderMiddleware.php(67): Google\ApiCore\Middleware\CredentialsWrapperMiddleware->__invoke()
#9 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/Middleware/RetryMiddleware.php(94): Google\ApiCore\Middleware\FixedHeaderMiddleware->__invoke()
#10 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/Middleware/RequestAutoPopulationMiddleware.php(73): Google\ApiCore\Middleware\RetryMiddleware->__invoke()
#11 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/Middleware/OptionsFilterMiddleware.php(60): Google\ApiCore\Middleware\RequestAutoPopulationMiddleware->__invoke()
#12 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/GapicClientTrait.php(630): Google\ApiCore\Middleware\OptionsFilterMiddleware->__invoke()
#13 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/cloud-spanner/src/V1/Gapic/SpannerGapicClient.php(774): Google\Cloud\Spanner\V1\Gapic\SpannerGapicClient->startCall()
#14 [internal function]: Google\Cloud\Spanner\V1\Gapic\SpannerGapicClient->createSession()
#15 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/cloud-core/src/ExponentialBackoff.php(97): call_user_func_array()
#16 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/cloud-core/src/GrpcRequestWrapper.php(134): Google\Cloud\Core\ExponentialBackoff->execute()
#17 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/cloud-core/src/GrpcTrait.php(79): Google\Cloud\Core\GrpcRequestWrapper->send()
#18 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/cloud-spanner/src/Connection/Grpc.php(864): Google\Cloud\Spanner\Connection\Grpc->send()
#19 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/cloud-spanner/src/Operation.php(620): Google\Cloud\Spanner\Connection\Grpc->createSession()
#20 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/cloud-spanner/src/Database.php(2236): Google\Cloud\Spanner\Operation->createSession()
#21 /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/cloud-spanner/src/Database.php(1678): Google\Cloud\Spanner\Database->selectSession()
#22 /home/marcobuschini/src/php-docs-samples/spanner/quickstart.php(46): Google\Cloud\Spanner\Database->execute()
#23 {main}
  thrown in /home/marcobuschini/src/php-docs-samples/spanner/vendor/google/gax/src/CredentialsWrapper.php on line 244

Running on PHP version:

PHP 8.3.6 (cli) (built: Jul 14 2025 18:30:55) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
    with Xdebug v3.2.0, Copyright (c) 2002-2022, by Derick Rethans

Running on Linux (the same happens running on WSL):

Linux marcobuschini-VirtualBox 6.14.0-28-generic #28~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 25 10:47:01 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    samplesIssues that are directly related to samples.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions