[run-tests.sh] Segmentation fault; D7 function drupal_get_bootstrap_phase() called in D6

RockyRoad - May 26, 2009 - 19:23
Project:SimpleTest
Version:6.x-2.x-dev
Component:Code
Category:bug report
Priority:critical
Assigned:boombatower
Status:closed
Description

Hi,

I just installed simpletest 6.x-2.8, followed all instructions in INSTALL, and I first ran it on xmlsitemap from the browser. It apparently went fine (reporting failures, not surprisingly since that module was often raising error messages).

But then, maybe I missed it, I couldn't find a report in a form suitable for sending to the module maintainer (please tell me if there is).

So I tried to re-run the tests from the command line, but there, every command (except help) ends with a segmentation fault.

mich@claddagh:/usr/local/share/drupal$ sudo -u www-data php ./scripts/run-tests.sh --url http://localhost/drupal/ --file sites/default/modules/xmlsitemap/xmlsitemap.test

Fatal error: Call to undefined function drupal_get_bootstrap_phase() in /usr/local/share/drupal-sites/default/modules/simpletest/simpletest.function.inc on line 130

Call Stack:
    1.8919   19069896   1. _drupal_exception_handler() /usr/local/share/drupal-sites/default/modules/simpletest/simpletest.function.inc:0
    1.8920   19070336   2. _drupal_log_error() /usr/local/share/drupal-sites/default/modules/simpletest/simpletest.function.inc:78

Segmentation fault

It turns up that drupal_get_bootstrap_phase() is in D7 only.

Anyway I then tried simpler :

mich@claddagh:/usr/local/share/drupal$ php scripts/run-tests.sh --clean

Environment cleaned.
- No left over tables to remove.
- No temporary directories to remove.
- Removed 0 test results.
Segmentation fault

That doesn't sound good what do you think ?

I'm running PHP 5.2.6-3ubuntu4.1 with Suhosin-Patch 0.9.6.2 with Apache/2.2.11 (linux ubuntu 9.04)

My drupal installation is based on PostgreSQL 8.3 .

I'd really like to be able to use test driven development for D6, because D7 is not released yet, and many big servers still run 5.x ...

Letting code maintainers improve reliability of their D6 modules would be a good step before they port them to D7.

Thank you for your work.

Best regards,

RockyRoad

#1

boombatower - May 28, 2009 - 15:47
Version:6.x-2.8» 6.x-2.x-dev
Assigned to:Anonymous» boombatower
Status:active» needs review

See if this fixes it.

AttachmentSize
473504-bootstrap-phase.patch 1.57 KB

#2

boombatower - May 28, 2009 - 15:54
Status:needs review» needs work

Told it still seg faults in IRC.

#3

boombatower - May 28, 2009 - 15:57

Hmmm...running block.test with a call to hax() in the testMethod() results in the display of the PHP Fatal error as expected.

Running test with following command:

sudo -u wwwrun php ./scripts/run-tests.sh --php /usr/bin/php --url http://drupal.d6x.loc/ --class BlockTestCase

#4

boombatower - May 28, 2009 - 16:05
Status:needs work» needs review

Seems to require a few more updates from D7, but I can now run the xmlsitemap test the same way you do and get the error messages.

AttachmentSize
473504-bootstrap-phase.patch 3.75 KB

#5

RockyRoad - May 28, 2009 - 21:15

I still get seg fault in both --clean invocation and the following:

mich@claddagh:/usr/local/share/drupal$ sudo -u www-data php ./scripts/run-tests.sh --url http://localhost/drupal/ --file sites/default/modules/xmlsitemap/xmlsitemap.test

Fatal error: Call to undefined function drupal_get_page() in /usr/local/share/drupal-sites/available/simpletest-6.x-2-dev/simpletest.function.inc on line 179

Call Stack:
    1.3117   19284844   1. _drupal_exception_handler() /usr/local/share/drupal-sites/available/simpletest-6.x-2-dev/simpletest.function.inc:0
    1.3118   19285284   2. _drupal_log_error() /usr/local/share/drupal-sites/available/simpletest-6.x-2-dev/simpletest.function.inc:78

Segmentation fault

You noticed that the error incriminates a different function and line number.

It sounds to me like two different issues:

  • seg fault, occuring even when no test is requested
  • backporting D7 functions, only when invoking tests

An idea: if #475464: SimpleTest: abstract reporter and generate XML reports (extended to text reports) was implemented, run-tests.sh use case could be reconsidered ... but I may well have missed something.

#6

RockyRoad - May 28, 2009 - 21:31

Ooops... previous output was after first patch.

The second patch gave me, for xml test, an html output whose content tells:
"The website encountered an unexpected error. Please try again later."

Same output as before for --clean invocation.

#7

snufkin - June 13, 2009 - 15:51

Same here with the patch. What needs to be backported? I could take a look, I need the cli testing for my SoC project.

#8

RockyRoad - June 13, 2009 - 18:13

Hi,

I had postponed working with simpletest, and I needed to retrieve my notes.

I updated from current cvs DRUPAL-6--2 branch, and restarted the tests.

Block and SimpleTests tests succeed from the browser.

From the CLI, run-tests.sh still complains about drupal_get_bootstrap_phase(),
until I reapplied 473504-bootstrap-phase_0 patch , which backports it.

But then, I get an html output with only an error message, but I found no trace of it in apache logs.

Note that, on my localhost where I ran the tests, drupal runs with pgsql.
Nothing indicates that the problem would be there though.

AttachmentSize
bug474188-interaction.txt 8.46 KB

#9

snufkin - June 15, 2009 - 10:31

I just tried todays dev roll, the class cli tests seem to work fine, cleanup works without segfault. The per-file run still misses the boostrap phase function, but I think i'll be able to run my class tests invoking --class.

#10

Damien Tournoud - June 15, 2009 - 10:47

The segfault is due to the order of loading the curl and postgresql extensions.

#11

boombatower - June 15, 2009 - 23:57

@Damien: any suggestions then? as I don't have postgresql so hard to test.

#12

Damien Tournoud - June 16, 2009 - 07:21

See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=411982

This is apparently a bug in pgsql, that frees a little bit too many things from openssl. You have to be sure to load pgsql before curl to workaround this bug. On Debian, it is as simple as:

mv /etc/php5/conf.d/curl.ini /etc/php5/conf.d/z-curl.ini

#13

RockyRoad - June 16, 2009 - 09:39
Status:needs review» reviewed & tested by the community

You're right Damien, thanks :)
After renaming curl.ini and reloading apache, the seg fault disappeared \o/

But I still have "The website encountered an unexpected error" html result, when running either :

sudo -u www-data php ./scripts/run-tests.sh --url http://localhost/drupal/ --file sites/all/modules/simpletest-6.x-2-dev/simpletest.test
sudo -u www-data php ./scripts/run-tests.sh --url http://localhost/drupal/ --file sites/all/modules/simpletest-6.x-2-dev/tests/block.test
sudo -u www-data php ./scripts/run-tests.sh --url http://localhost/drupal/ --file sites/default/modules/xmlsitemap/xmlsitemap.test

I just tried the --class invocation:

sudo -u www-data php ./scripts/run-tests.sh --url http://localhost/drupal/ --class SimpleTestFunctionalTest

It works better, with a text output this time:

Drupal test run
---------------

Tests to be run:
- SimpleTest functionality (SimpleTestFunctionalTest)

Test run started: Tue, 2009-06-16 09:07

Test summary:
-------------

SimpleTest functionality 110 passes, 0 fails, and 0 exceptions

Test run duration: 2 min 54 sec

It works fine with --class BlockTestCase too, with or without the --php /usr/bin/php option, but all 66 tests succeed for me.

#14

Damien Tournoud - June 16, 2009 - 09:48

Have you tried by group name? This is the prefered way to invoke a test. I'm not even sure if --file works in D7.

#15

RockyRoad - June 16, 2009 - 12:46

ERROR: Unknown argument '--group'.

#16

snufkin - June 16, 2009 - 13:03

You can invoke a test group like this: php scripts/run-tests.sh Block

#17

mike booth - July 14, 2009 - 15:51

I can't claim to have tested this patch exhaustively... but I was getting the fatal error on the Simpletest admin page, caused by the offending call to drupal_get_bootstrap_phase(), and this patch seems to have resolved my issue. Thanks, and good work.

#18

boombatower - September 14, 2009 - 19:53
Status:reviewed & tested by the community» fixed

Please re-open if still an issue.

#19

System Message - September 28, 2009 - 20:00
Status:fixed» closed

Automatically closed -- issue fixed for 2 weeks with no activity.

 
 

Drupal is a registered trademark of Dries Buytaert.