• Please complete the contact form below with details about your inquiry and I'll get back to you as soon as possible.

  • This field is for validation purposes and should be left unchanged.

PHP and PHPUnit: Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

If you’re getting the following error while running PHPUnit tests, check if the following is true:

  • The unit test returning the segfault uses a test double function: createMock(), createStub(), etc.
  • The mocked object has a __destruct() function.
  • In the __destruct() function, the last method call is a public method, that returns the object (self/static return type).

If that is the case, try to make your last method call private or make it return void. If that worked, let me know in a comment below, and if you can – explain why that happens 🙂 My guess is that the last method call is accessing a self reference to the object, after the object has been destroyed, hence the segfault error which means that an invalid memory space has been accessed.

Update: I have created a reproduction repository https://github.com/DragosMocrii/php-bug-destruct-segfault containing more complete information about the bug and how to temporarily get around it. PHP bug report created at https://github.com/php/php-src/issues/12373 .

Leave a Reply

Your email address will not be published. Required fields are marked *