A quick tip to debug segfaults in QGIS Server.
Sometimes is hard to debug segfaults appearing in QGIS Server when running in CGI mode. The classic approach is attaching agdb
to the running process.
The problem is that there is not enough time to do it!
A simple plugin filter, can provide you the time you need to attach the debugger:
from qgis.server import * from qgis.core import * import os class DelayFilter(QgsServerFilter): def __init__(self, serverIface): super(DelayFilter, self).__init__(serverIface) def responseComplete(self): request = self.serverInterface().requestHandler() params = request.parameterMap() if params.get('DELAY', ''): QgsMessageLog.logMessage("PID: %s" % os.getpid()) import time time.sleep(30)Calling the server with
DELAY=1
will wait for 30 seconds and print the current PID in the server logs.
This will give you enough time to fire gdb
and attach it to the process.