#2465·smartdns

[Bug] Release 48.4 crashes with SIGILL on MediaTek MT7621 (mipsel)

Author: mxdabcCreated Sep 18, 2026Updated Sep 18, 2026

Description

SmartDNS 48.4 crashes immediately with Illegal instruction (SIGILL, exit code 132) on a Xiaomi Mi Router 4A Gigabit Edition with a MediaTek MT7621 CPU.

The same configuration and hardware work normally with SmartDNS 48.3.

Sha256

sha256sum /usr/sbin/smartdns
02a3390b43af092f6bbf9312988d5f5094858e24f08bca70fab63eec11f90d11  /usr/sbin/smartdns

Environment

  • Device: Xiaomi Mi Router 4A Gigabit Edition
  • SoC: MediaTek MT7621 ver:1 eco:3
  • CPU: MIPS 1004Kc V2.15
  • ISA: MIPS32r2
  • Endianness: little-endian
  • OpenWrt: Official OpenWrt build OpenWrt 25.12.2 r32802-f505120278 / LuCI (HEAD detached at 067535e) branch 26.082.75780~067535e
  • Kernel version: 6.12.74
  • Target platform: ramips/mt7621
  • SmartDNS 48.4 package: smartdns.1.2026.08.05-0921.mipsel-openwrt-all.apk

Reproduction

Running SmartDNS 48.4 directly:

bash
/usr/sbin/smartdns -f -c /var/etc/smartdns/smartdns.conf

results in:

Illegal instruction        /usr/sbin/smartdns -f -c /var/etc/smartdns/smartdns.conf

exit status:

bash
echo $?

results in:

132

Starting it through the OpenWrt init script also fails:

bash
/etc/init.d/smartdns start
/etc/init.d/smartdns status

returns:

not running

procd reports:

json
{
  "running": false,
  "exit_code": 132,
  "command": [
    "/usr/sbin/smartdns",
    "-f",
    "-c",
    "/var/etc/smartdns/smartdns.conf"
  ]
}

/etc/init.d/smartdns info says:

{
	"smartdns": {
		"instances": {
			"smartdns": {
				"running": false,
				"command": [
					"/usr/sbin/smartdns",
					"-f",
					"-c",
					"/var/etc/smartdns/smartdns.conf"
				],
				"term_timeout": 60,
				"exit_code": 132,
				"env": {
					"TZ": "CST-8"
				}
			}
		},
		"triggers": [
			[
				"config.change",
				[
					"if",
					[
						"eq",
						"package",
						"firewall"
					],
					[
						"run_script",
						"/etc/init.d/smartdns",
						"reload"
					]
				],
				1000
			],
			[
				"config.change",
				[
					"if",
					[
						"eq",
						"package",
						"smartdns"
					],
					[
						"run_script",
						"/etc/init.d/smartdns",
						"reload"
					]
				],
				1000
			]
		]
	}
}

The failure also occurs without loading the configuration, since even:

bash
/usr/sbin/smartdns -v

triggers SIGILL.

Comparison with SmartDNS 48.3

SmartDNS 48.3 starts normally on the same device and hardware.

No hardware or OpenWrt changes were made between testing 48.3 and 48.4.

ELF information

The SmartDNS 48.4 binary reports (using file smartdns) :

smartdns: ELF 32-bit LSB pie executable, MIPS, MIPS-I version 1 (SYSV), static-pie linked, not stripped

readelf -h reports:

ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Position-Independent Executable file)
  Machine:                           MIPS R3000
  Version:                           0x1
  Entry point address:               0x6a350
  Start of program headers:          52 (bytes into file)
  Start of section headers:          5786944 (bytes into file)
  Flags:                             0x1007, noreorder, pic, cpic, o32, mips1
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         8
  Size of section headers:           40 (bytes)
  Number of section headers:         29
  Section header string table index: 28

The CPU reports:

system type		: MediaTek MT7621 ver:1 eco:3
machine			: Xiaomi Mi Router 4A Gigabit Edition
processor		: 0
cpu model		: MIPS 1004Kc V2.15
BogoMIPS		: 586.13
wait instruction	: yes
microsecond timers	: yes
tlb_entries		: 32
extra interrupt vector	: yes
hardware watchpoint	: yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa			: mips1 mips2 mips32r1 mips32r2
ASEs implemented	: mips16 dsp mt
Options implemented	: tlb 4kex 4k_cache prefetch mcheck ejtag llsc pindexed_dcache userlocal vint perf_cntr_intr_bit cdmm perf
shadow register sets	: 1
kscratch registers	: 0
package			: 0
core			: 0
VPE			: 0
VCED exceptions		: not available
VCEI exceptions		: not available

Expected behavior

SmartDNS 48.4 should start normally on MT7621/MIPS32r2, as SmartDNS 48.3 does on the same hardware.

Log

The program fails to run, so there are no log messages. All available information is provided here. The router has insufficient storage space to allow the kernel to directly report the SIGILL address.