Segmentation faults on v6

Matters relating to SQL, RDF, XML, and Free Text data management

Segmentation faults on v6

Postby cuu508 on Wed Oct 21, 2009 5:24 am

Hello,

First, congratulations on v6 release! The feature set looks impressive and I'm happy to see various subtle improvements all around.
When trying out this release I unfortunately ran into segmentation fault issues.
I downloaded, compiled and installed Virtuoso Open-Source Edition 6 (virtuoso-opensource-6.0.0.tar.gz from sourceforge). It seems to work fine overall but at seemingly random moments it crashes with:

Code: Select all
petcau@petcau-laptop:/usr/local/virtuoso-opensource/var/lib/virtuoso/db$ virtuoso-t -f virtuoso.ini

      Wed Oct 21 2009
11:04:15 OpenLink Virtuoso Universal Server
11:04:15 Version 06.00.3123-pthreads for Linux as of Oct 21 2009
11:04:15 uses parts of OpenSSL, PCRE, Html Tidy
11:04:15 Database version 3100
11:04:15 SQL Optimizer enabled (max 1000 layouts)
11:04:16 Compiler unit is timed at 0.000927 msec
11:04:17 Roll forward started
11:04:17 Roll forward complete
11:04:18 Checkpoint made, log reused
11:04:18 HTTP/WebDAV server online at 9980
11:04:18 Server online at 1111 (pid 13772)
11:05:19 GPF: page.c:2392 page_apply called with not enough stack
GPF: page.c:2392 page_apply called with not enough stack
Segmentation fault


After the GPF message virtuoso-t process sometimes exits with segmentation fault, sometimes gets stuck and I have to kill it. This has happened during/after several operations:
* just after uploading RDF file with WebDav Browser.
* when executing requests against /sparql endpoint in serial order, quick succesion. Several hundred queries execute fine and then this
* clicking around Conductor interface
In all cases the message in console is exactly the same.

I'm using 32bit Ubuntu 9.04, and I see the same behavior on two different boxes (both running 9.04).
Please tell me if you need any additional information to investigate this issue.
cuu508
 
Posts: 10
Joined: Thu Aug 06, 2009 1:36 pm

Re: Segmentation faults on v6

Postby hwilliams on Wed Oct 21, 2009 6:58 am

Hi

Can say that we have seen instances of this. Is a core file being created in which case you could build and none stripped version (CFLAGS = -g only and LDFLAGS = -g) of the Virtuoso binary and analyze the core with gdb to determine the operations being performed leading up to the crashes.

I shall also inquire of development as to whether the error reported in the Virtuoso log file might give any indication as to possible cause of failure.

Best Regards
Hugh Williams
OpenLink Software
hwilliams
 
Posts: 258
Joined: Thu Mar 06, 2008 4:30 am

Re: Segmentation faults on v6

Postby hwilliams on Wed Oct 21, 2009 11:07 am

Hi

Feedback from development indicates that "page.c:2392 page_apply called with not enough stack" is typically cases by the "HTTPThreadSize" parameter being too low in the the "[HTTPServer]" section of the Virtuoso configuration file (virtuoso.ini) By default this is set to 240000 can you please try increasing to 380000. Should the problem persist then Please try setting the "MainThreadSize" in the "[Parameters]" section to 280000 and retry.

Let us know if this resolves the issue.

Best Regards
Hugh Williams
OpenLink Software
hwilliams
 
Posts: 258
Joined: Thu Mar 06, 2008 4:30 am

Re: Segmentation faults on v6

Postby cuu508 on Wed Oct 21, 2009 1:27 pm

Hi,

I tried increasing both HTTPThreadSize and MainThreadSize but was still getting Segmentation faults. I went as far as increasing them 10x.
It seems that these crashes always occur about 1 minute after first RDF-related request. If it just fire up virtuoso-t, it idles without crashing. Then, when I execute a SPARQL query, the query succeeds, a minute passes, virtuoso-t segfaults.

There is no core dump. I compiled with suggested CFLAGS=-g, LDFLAGs=-g and with ./configure --with-debug, then ran virtuoso under Valgrind's memcheck like this:

Code: Select all
G_SLICE=always-malloc G_DEBUG=gc-friendly  valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log virtuoso-t -f virtuoso.ini


I've attached the generated log file, it contains contains some error reports, but I cannot make much out of that.
Attachments
valgrind.log
valgrind log file
(15.37 KiB) Downloaded 2 times
cuu508
 
Posts: 10
Joined: Thu Aug 06, 2009 1:36 pm

Re: Segmentation faults on v6

Postby cuu508 on Wed Oct 21, 2009 1:43 pm

And here's a gdb backtrace generated as per https://wiki.ubuntu.com/Backtrace
Attachments
gdb-virtuoso-3.txt
(34.53 KiB) Downloaded 4 times
cuu508
 
Posts: 10
Joined: Thu Aug 06, 2009 1:36 pm

Re: Segmentation faults on v6

Postby hwilliams on Wed Oct 21, 2009 2:00 pm

Hi

Thanks I shall pass the valgrind and gdb trace on to development for analysis and report back with their findings ...

Best Regards
Hugh Williams
OpenLink Software
hwilliams
 
Posts: 258
Joined: Thu Mar 06, 2008 4:30 am

Re: Segmentation faults on v6

Postby hwilliams on Thu Oct 22, 2009 8:06 pm

Hi

Development request you add the following to the Parameters section of the Virtuoso configuration file:

Parameters]
ServerThreadSize = 280000

You can unset the HTTPThreadSIze in the HTTP section of the Virtuoso configuration file, as it will the default to 280000 also.

A fix to prevent these crashes occurring will be in the upcoming 6.0.1 release.

Best Regards
Hugh Williams
OpenLink Software
hwilliams
 
Posts: 258
Joined: Thu Mar 06, 2008 4:30 am

Re: Segmentation faults on v6

Postby cuu508 on Fri Oct 23, 2009 7:25 am

Hi, setting this parameter seems to have fixed segmentation faults -- haven't seen any for some while. Thanks!
cuu508
 
Posts: 10
Joined: Thu Aug 06, 2009 1:36 pm

Re: Segmentation faults on v6

Postby hwilliams on Fri Oct 23, 2009 7:39 am

Hi

Thats good news, thanks for the feedback. As stated a permanent fix for this issue will be in the next 6.0.1 release ...

Best Regards
Hugh Williams
OpenLink Software
hwilliams
 
Posts: 258
Joined: Thu Mar 06, 2008 4:30 am


Return to Virtuoso - Native Data Management

Who is online

Users browsing this forum: No registered users and 1 guest

cron