Want Domino to crash reliably? Here is how

Friday, April 17, 2026 at 10:14 AM UTC

Of course usually you don't want the server to crash and normally you do everything to have it in a stable condition. Sometimes you may want to force a crash for testing purposes, e.g. your server monitoring or maybe you just want a sample NSD file.

This post shows how to crash a Domino reliably with a single button click Cool

Create a new blank NSF. Enable the Extension Library feature in the XSP properties since the code uses the ExtLibUtil class.

xsp.library.depends=com.ibm.xsp.extlib.library

Create a new Java code resource com.yourorg.DQLSearch with this code:

package com.yourorg;

import java.io.Serializable;

import com.ibm.xsp.extlib.util.ExtLibUtil;

import lotus.domino.Database;
import lotus.domino.DominoQuery;
import lotus.domino.Session;

public class DQLSearch implements Serializable {
    private static final long serialVersionUID = 1L;

    public void execute() {
        try {
            // the query is missing a logical operator between the 2 terms like OR or AND
            String malformed = "form in ('gen_email', 'crm_letter') (CompanyName contains ('grouplink ITS GmbH') OR obj_company contains ('94C83D99287E25F3C1258D10004482C7'))";
            Session session = ExtLibUtil.getCurrentSession();
            Database db = ExtLibUtil.getCurrentDatabase();
            DominoQuery dq = db.createDominoQuery();
            dq.execute(malformed); // crash
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

Edit the faces-config.xml file to define a Java bean.

<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
  <managed-bean>
    <managed-bean-name>dql</managed-bean-name>
    <managed-bean-class>com.yourorg.DQLSearch</managed-bean-class>
    <managed-bean-scope>view</managed-bean-scope>
  </managed-bean>
  <!--AUTOGEN-START-BUILDER: Automatically generated by HCL Domino Designer. Do not modify.-->
  <!--AUTOGEN-END-BUILDER: End of automatically generated section-->
</faces-config>

Create a new Xpage and place a button.

 <?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:button
        value="Execute malformed DQL"
        id="button1">
    <xp:eventHandler
        event="onclick"
        submit="true"
        refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript:dql.execute();}]]></xp:this.action>
    </xp:eventHandler></xp:button>
</xp:view>

Set the ACL as you like and open the page in a browser. Hit the button and watch the server crash immediately.

 Stack base = 0x90dfefcc, Stack size = 25664 bytes 
Fatal Error signal = 0x0000000b PID/TID = 1686123/%bd 
4/17/2026 12:02:00  Running NSD
NSD is in progress .................

This doesn't happen with all malformed DQL queries. It seems it only happens when the second term is also using further logic operation. When you omit the last term OR obj_company contains ('94C83D99287E25F3C1258D10004482C7') you only get an exception as expected that the query was malformed.

I filed a case and will keep you updated about the result.







Leave a comment right here