Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PLUGIN] SCSI Enclosure Monitor

Featured Replies

I've had a crack at this on my set up, even though mine's a EMC KTN-STL3.

The log reports:
sesmon: /dev/sg25:0x50060480000dc33e: "sg_ses": [3/3] execution failure: signal: segmentation fault: stdout=[] stderr=[report timestamp: transport: Host_status=0x0b [DID_SOFT_ERROR]

I'm assuming it's because it's not a NetApp, do you have any plans to support other disk shelves?

  • Author
2 hours ago, minkshaman said:

I've had a crack at this on my set up, even though mine's a EMC KTN-STL3.

The log reports:
sesmon: /dev/sg25:0x50060480000dc33e: "sg_ses": [3/3] execution failure: signal: segmentation fault: stdout=[] stderr=[report timestamp: transport: Host_status=0x0b [DID_SOFT_ERROR]

I'm assuming it's because it's not a NetApp, do you have any plans to support other disk shelves?

The service just wraps the sg_ses binary, which should support all SES-capable devices (including yours).

I think the issue is that your device does not support the timestamp it tries to get from it and sends a malformed response.

I've added an argument which avoids this, as we do not strictly need the timestamp, and the latest update should fix it - let me know!

16 hours ago, Rysz said:

The service just wraps the sg_ses binary, which should support all SES-capable devices (including yours).

I think the issue is that your device does not support the timestamp it tries to get from it and sends a malformed response.

I've added an argument which avoids this, as we do not strictly need the timestamp, and the latest update should fix it - let me know!

Thanks, I really appreciate the effort!

I've tried the new version and it's failed with no real error.

Service Configuration

SCSI Enclosures ( lsscsi -g | grep enclosu ):

[6:0:15:0]   enclosu EMC      ESES Enclosure   0001  -          /dev/sg25

SCSI Enclosure Addresses ( lsscsi -gt | grep enclosu ):

[6:0:15:0]   enclosu sas:0x50060480000dc33e          -          /dev/sg25

<13>Nov 13 10:39:39 sesmon: /dev/sg25:0x50060480000dc33e: Monitoring [/dev/sg25:0x50060480000dc33e] with configuration [{"poll_interval":"1m30s","poll_attempts":3,"poll_attempt_timeout":"15s","poll_attempt_interval":"15s","poll_backoff_after":3,"poll_backoff_time":"3m0s","poll_backoff_notify":true,"poll_backoff_stopmonitor":false,"output_dir":"/var/lib/sesmon/JBOD","verbose":true}]; and notification agent [script_notifier] with configuration ["/etc/sesmon/notify.sh":{"notify_attempts":3,"notify_attempt_timeout":"15s","notify_attempt_interval":"15s"}]

<13>Nov 13 10:39:39 sesmon: /dev/sg25:0x50060480000dc33e: "sg_ses": [1/3] execution failure: signal: segmentation fault: stdout=[] stderr=[]

<13>Nov 13 10:39:54 sesmon: /dev/sg25:0x50060480000dc33e: "sg_ses": [2/3] execution failure: signal: segmentation fault: stdout=[] stderr=[]

<13>Nov 13 10:40:09 sesmon: /dev/sg25:0x50060480000dc33e: "sg_ses": [3/3] execution failure: signal: segmentation fault: stdout=[] stderr=[]

<13>Nov 13 10:40:09 sesmon: /dev/sg25:0x50060480000dc33e: Error polling device [1/3]: failure fetching from device: "sg_ses": [3/3] execution failure: signal: segmentation fault: stdout=[] stderr=[]

Any ideas?

  • Author
2 minutes ago, minkshaman said:

Thanks, I really appreciate the effort!

I've tried the new version and it's failed with no real error.

Service Configuration

SCSI Enclosures ( lsscsi -g | grep enclosu ):

[6:0:15:0]   enclosu EMC      ESES Enclosure   0001  -          /dev/sg25

SCSI Enclosure Addresses ( lsscsi -gt | grep enclosu ):

[6:0:15:0]   enclosu sas:0x50060480000dc33e          -          /dev/sg25

<13>Nov 13 10:39:39 sesmon: /dev/sg25:0x50060480000dc33e: Monitoring [/dev/sg25:0x50060480000dc33e] with configuration [{"poll_interval":"1m30s","poll_attempts":3,"poll_attempt_timeout":"15s","poll_attempt_interval":"15s","poll_backoff_after":3,"poll_backoff_time":"3m0s","poll_backoff_notify":true,"poll_backoff_stopmonitor":false,"output_dir":"/var/lib/sesmon/JBOD","verbose":true}]; and notification agent [script_notifier] with configuration ["/etc/sesmon/notify.sh":{"notify_attempts":3,"notify_attempt_timeout":"15s","notify_attempt_interval":"15s"}]

<13>Nov 13 10:39:39 sesmon: /dev/sg25:0x50060480000dc33e: "sg_ses": [1/3] execution failure: signal: segmentation fault: stdout=[] stderr=[]

<13>Nov 13 10:39:54 sesmon: /dev/sg25:0x50060480000dc33e: "sg_ses": [2/3] execution failure: signal: segmentation fault: stdout=[] stderr=[]

<13>Nov 13 10:40:09 sesmon: /dev/sg25:0x50060480000dc33e: "sg_ses": [3/3] execution failure: signal: segmentation fault: stdout=[] stderr=[]

<13>Nov 13 10:40:09 sesmon: /dev/sg25:0x50060480000dc33e: Error polling device [1/3]: failure fetching from device: "sg_ses": [3/3] execution failure: signal: segmentation fault: stdout=[] stderr=[]

Any ideas?

What happens when you run:
sg_ses --all --json --no-time /dev/sg25

Just now, Rysz said:

What happens when you run:
sg_ses --all --json --no-time /dev/sg25

root@PowerEdge:~# sg_ses --all --json --no-time /dev/sg25

Segmentation fault sg_ses --all --json --no-time /dev/sg25

  • Author
Just now, minkshaman said:

root@PowerEdge:~# sg_ses --all --json --no-time /dev/sg25

Segmentation fault sg_ses --all --json --no-time /dev/sg25

I'm afraid nothing we can do then, it's most likely a malformed/unknown response from the enclosure.

The segmentation fault is due to an unhandled exception in the sg_ses binary (which is unfortunately unmaintained).

Thanks for trying though and reporting back, even if it did not work out in the end...

Is it possible that I was mistaken in the connection of the device?

I understood that i didn't need to connect both data ports as the second was for daisy chaining for more disk shelves.

Was I wrong?

I mean, it works...

Edited by minkshaman

  • Author
Just now, minkshaman said:

Is it possible that I was mistaken in the connection of the device?

I understood that i didn't need to connect both data ports as the second was for daisy chaining for more disk shelves.

Was I wrong?

No, it should work if your disks work normally in Unraid - it's possible that the in-band SES protocol is not fully compliant for the enclosure.

Just now, Rysz said:

No, it should work if your disks work normally in Unraid - it's possible that the in-band SES protocol is not fully compliant for the enclosure.

No worries then, I really love the plugin though, I was excited to get some stats from my diskshelf!

Next step we need someone to implement the iDRAC Service Module as a plugin! ;D

I just found some doco on mine if you're willing to take a squiz?

  • Author
33 minutes ago, minkshaman said:

So I got curious on the outputs that the sg_ses tool could see and started going through them...

I've put the output for --page=es and --page=cf in a txt if it's of any use to you!

I can see on reddit that people have gotten fan speed and temp
https://www.reddit.com/r/homelab/comments/pyynm2/emc_sae_vnx_disk_shelf_question/

sg_ses devbsg60150.txt

That's great, can you run both pages with --json and post the output in one file for each page? Maybe I can put something together with that or find the bug in the sg_ses tool.

23 hours ago, Rysz said:

That's great, can you run both pages with --json and post the output in one file for each page? Maybe I can put something together with that or find the bug in the sg_ses tool.

sg_ses --json.txtsg_ses --page=cf.txtsg_ses --page=es.txt

Hopefully you can work with these! :)

@Rysz

Any progress?

  • Author
On 11/20/2025 at 1:18 AM, minkshaman said:

@Rysz

Any progress?

Unfortunately the format is wildly different, to the point it'd require a rewrite of the core daemon logic.

It's not something I can do at the moment, but I'll put it on the TO-DO list for the future... (no promises, I'm afraid).

The issue is that your device doesn't fully implement the SES standard and sends malformed responses to some commands.

This in turn is not handled gracefully by the - unfortunately unmaintained - sg_ses program, which crashes with the unexpected response.

Even if I were to identify where the crash in the sg_ses program is coming from and fixed it, I couldn't ship it as it's embedded in the Unraid OS.

My plugin and daemon are basically reliant on the sg_ses program working normally, which it should if the device has a clean SES implementation.

I appreciate you posting the files though, and I hope to make use of them to design an alternative polling path for such devices in the future - many thanks! 🤗

Same issue, I have a HP Gen8 Server's 12+2 backplane, sg_ses --all --no-time /dev/sg12 success, but when I run sg_ses --all --json --no-time /dev/sg12 got Segmentation fault

  • Author
1 hour ago, Wu23333 said:

Same issue, I have a HP Gen8 Server's 12+2 backplane, sg_ses --all --no-time /dev/sg12 success, but when I run sg_ses --all --json --no-time /dev/sg12 got Segmentation fault

Sorry, same applies to you, we're out of luck as the sg_ses binary is both OS-embedded and the sg3_utils project is unmaintained.

If anyone has experience with GDB and could provide me with a stack trace, I might be able to patch it up, but without a crashing device I can't do anything.

  • Author

@Wu23333 @minkshaman Can you try running with -vvvvvv, like `sg_ses -vvvvvv --all --json --no-time /dev/sg12?

Maybe it prints some information leading up to the segmentation fault that gives me some clues...

@Rysz

Thanks for the relay. I understand that this outdated backplane does indeed have many issues. I plan to try debugging sg_ses, though I don't hold out much hope.

Additionally, here is the output with -vvvvvv:

root@Tower:~# sg_ses -vvvvvv --all --json --no-time /dev/sg12
open /dev/sg12 with flags=0x802
check_file_type: file descriptor is sg device
set_pt_file_handle: sg driver version 3.05.36 so choose v3
    inquiry cdb: [12 00 00 00 24 00]
do_scsi_pt:  is_nvme=0, is_sg=1, is_bsg=0
      duration=0 ms
    request sense cdb: [03 00 00 00 fc 00]
do_scsi_pt:  is_nvme=0, is_sg=1, is_bsg=0
      duration=0 ms
    request sense: pass-through requested 252 bytes (data-in), got 18 bytes
    Receive diagnostic results command for Configuration (SES) diagnostic page
    Receive diagnostic results cdb: [1c 01 01 ff fc 00]
do_scsi_pt:  is_nvme=0, is_sg=1, is_bsg=0
      duration=0 ms
    Receive diagnostic results: pass-through requested 65532 bytes (data-in), got 260 bytes
    Receive diagnostic results: response:
 00     01 00 01 00 00 00 00 00  11 00 05 44 50 01 43 80    ...........DP.C.
 10     34 f3 94 80 48 50 20 20  20 20 20 20 47 65 6e 38    4...HP      Gen8
 20     20 53 65 72 76 42 50 20  31 32 2b 32 33 2e 33 30     ServBP 12+23.30
 30     4d 61 78 69 6d 20 49 6e  74 65 67 72 61 74 65 64    Maxim Integrated
 40     20 50 72 6f 64 75 63 74  73 2c 20 49 6e 63 2e 00     Products, Inc..
 50     17 0e 00 20 07 01 00 20  0e 01 00 20 18 01 00 20    ... ... ... ...
 60     19 18 00 20 44 72 69 76  65 20 42 61 79 20 20 20    ... Drive Bay
 70     20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
 80     00 00 00 00 45 6e 63 6c  6f 73 75 72 65 20 53 65    ....Enclosure Se
 90     72 76 69 63 65 20 43 6f  6e 74 72 6f 6c 6c 65 72    rvice Controller
 a0     00 00 00 00 45 6e 63 6c  6f 73 75 72 65 20 20 20    ....Enclosure
 b0     20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
 c0     00 00 00 00 53 41 53 20  45 78 70 61 6e 64 65 72    ....SAS Expander
 d0     20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
 e0     00 00 00 00 53 41 53 20  45 78 70 61 6e 64 65 72    ....SAS Expander
 f0     20 50 68 79 20 20 20 20  20 20 20 20 20 20 20 20     Phy
 100    00 00 00 00                                         ....
    Receive diagnostic results command for Enclosure Status (SES) diagnostic page
    Receive diagnostic results cdb: [1c 01 02 ff fc 00]
do_scsi_pt:  is_nvme=0, is_sg=1, is_bsg=0
      duration=0 ms
    Receive diagnostic results: pass-through requested 65532 bytes (data-in), got 192 bytes
    Receive diagnostic results: response:
 00     02 00 00 bc 00 00 00 00  00 00 00 00 05 80 40 00    ..............@.
 10     05 80 40 00 01 80 40 00  01 80 40 00 05 80 40 00    ..@...@...@...@.
 20     01 80 40 00 01 80 40 00  01 80 40 00 01 80 40 00    ..@...@...@...@.
 30     05 80 40 00 05 80 40 00  05 80 40 00 05 00 00 00    ..@...@...@.....
 40     05 00 00 00 00 00 00 00  01 00 01 00 00 00 00 00    ................
 50     01 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00    ................
 60     01 20 00 00 01 20 00 00  01 20 00 00 01 20 00 00    . ... ... ... ..
 70     01 20 00 00 01 20 00 00  01 20 00 00 01 20 00 00    . ... ... ... ..
 80     01 20 00 00 01 20 00 00  01 20 00 00 01 20 00 00    . ... ... ... ..
 90     01 20 00 00 01 20 00 00  25 00 00 00 25 00 00 00    . ... ..%...%...
 a0     01 11 00 00 01 11 01 00  01 11 02 00 01 11 03 00    ................
 b0     01 11 00 00 01 11 01 00  01 11 02 00 01 11 03 00    ................
    Receive diagnostic results command for Element Descriptor (SES) diagnostic page
    Receive diagnostic results cdb: [1c 01 07 ff fc 00]
do_scsi_pt:  is_nvme=0, is_sg=1, is_bsg=0
      duration=0 ms
Receive diagnostic results:
Fixed format, current; Sense key: Illegal Request
Additional sense: Invalid command operation code
 Raw sense data (in hex), sb_len=18, calculated_len=18
        70 00 05 00 00 00 00 0a  00 00 00 00 20 00 00 00
        00 00
    Receive diagnostic results: pass-through requested 65532 bytes (data-in), got 0 bytes
Attempt to fetch Element Descriptor (SES) diagnostic page failed
    Illegal request, Invalid opcode, type: sense key + asc,ascq
  Element Descriptor page not available
    Receive diagnostic results command for Additional Element Status (SES-2) diagnostic page
    Receive diagnostic results cdb: [1c 01 0a ff fc 00]
do_scsi_pt:  is_nvme=0, is_sg=1, is_bsg=0
      duration=0 ms
    Receive diagnostic results: pass-through requested 65532 bytes (data-in), got 576 bytes
    Receive diagnostic results: response:
 00     0a 00 02 3c 00 00 00 00  16 22 01 01 01 01 00 01    ...<....."......
 10     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 20     00 00 00 00 00 00 00 00  00 00 00 00 16 22 01 02    ............."..
 30     01 01 00 02 00 00 00 00  00 00 00 00 00 00 00 00    ................
 40     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 50     16 22 01 03 01 01 00 03  00 00 00 01 50 01 43 80    ."..........P.C.
 60     34 f3 94 80 50 01 43 80  34 f3 94 83 00 00 00 00    4...P.C.4.......
 70     00 00 00 00 16 22 01 04  01 01 00 04 00 00 00 01    ....."..........
 80     50 01 43 80 34 f3 94 80  50 01 43 80 34 f3 94 84    P.C.4...P.C.4...
 90     00 00 00 00 00 00 00 00  16 22 01 05 01 01 00 05    ........."......
 a0     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 b0     00 00 00 00 00 00 00 00  00 00 00 00 16 22 01 06    ............."..
 c0     01 01 00 06 00 00 00 01  50 01 43 80 34 f3 94 80    ........P.C.4...
 d0     50 01 43 80 34 f3 94 86  00 00 00 00 00 00 00 00    P.C.4...........
 e0     16 22 01 07 01 01 00 07  00 00 00 01 50 01 43 80    ."..........P.C.
 f0     34 f3 94 80 50 01 43 80  34 f3 94 87 00 00 00 00    4...P.C.4.......
 100    00 00 00 00 16 22 01 08  01 01 00 08 00 00 00 01    ....."..........
 110    50 01 43 80 34 f3 94 80  50 01 43 80 34 f3 94 88    P.C.4...P.C.4...
 120    00 00 00 00 00 00 00 00  16 22 01 09 01 01 00 09    ........."......
 130    00 00 00 01 50 01 43 80  34 f3 94 80 50 01 43 80    ....P.C.4...P.C.
 140    34 f3 94 89 00 00 00 00  00 00 00 00 16 22 01 0a    4............"..
 150    01 01 00 0a 00 00 00 00  00 00 00 00 00 00 00 00    ................
 160    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 170    16 22 01 0b 01 01 00 0b  00 00 00 00 00 00 00 00    ."..............
 180    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 190    00 00 00 00 16 22 01 0c  01 01 00 0c 00 00 00 00    ....."..........
 1a0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1b0    00 00 00 00 00 00 00 00  16 22 01 0d 01 01 00 0d    ........."......
 1c0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1d0    00 00 00 00 00 00 00 00  00 00 00 00 16 22 01 0e    ............."..
 1e0    01 01 00 0e 00 00 00 00  00 00 00 00 00 00 00 00    ................
 1f0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
 200    16 3e 01 01 18 40 00 00  50 01 43 80 34 f3 94 80    .>[email protected]...
 210    ff 01 ff 02 ff 03 ff 04  ff 05 ff 06 ff 07 ff 08    ................
 220    ff 09 ff 0a ff 0b ff 0c  ff 0d ff 0e ff ff ff ff    ................
 230    ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff    ................
warning: aes slot already in use, keep existing AES+8
	dropping AES+512 [length=64, oi=1, ei=1, aes_i=14]
warning: join_aes_helper: off end of ae page
Dump of join array, each line is a row. Lines start with
[<element_type>: <type_hdr_index>,<elem_ind_within>]
'-1' indicates overall element or not applicable.
[0x17: 0,-1] ei_ioe,_eoe,_aess=0,-1,-1 dsn=-1 ES+8
[0x17: 0,0] ei_ioe,_eoe,_aess=1,0,0 dsn=1 ES+12 AES+8
[0x17: 0,1] ei_ioe,_eoe,_aess=2,1,1 dsn=2 ES+16 AES+44
[0x17: 0,2] ei_ioe,_eoe,_aess=3,2,2 dsn=3 ES+20 AES+80
[0x17: 0,3] ei_ioe,_eoe,_aess=4,3,3 dsn=4 ES+24 AES+116
[0x17: 0,4] ei_ioe,_eoe,_aess=5,4,4 dsn=5 ES+28 AES+152
[0x17: 0,5] ei_ioe,_eoe,_aess=6,5,5 dsn=6 ES+32 AES+188
[0x17: 0,6] ei_ioe,_eoe,_aess=7,6,6 dsn=7 ES+36 AES+224
[0x17: 0,7] ei_ioe,_eoe,_aess=8,7,7 dsn=8 ES+40 AES+260
[0x17: 0,8] ei_ioe,_eoe,_aess=9,8,8 dsn=9 ES+44 AES+296
[0x17: 0,9] ei_ioe,_eoe,_aess=10,9,9 dsn=10 ES+48 AES+332
[0x17: 0,10] ei_ioe,_eoe,_aess=11,10,10 dsn=11 ES+52 AES+368
[0x17: 0,11] ei_ioe,_eoe,_aess=12,11,11 dsn=12 ES+56 AES+404
[0x17: 0,12] ei_ioe,_eoe,_aess=13,12,12 dsn=13 ES+60 AES+440
[0x17: 0,13] ei_ioe,_eoe,_aess=14,13,13 dsn=14 ES+64 AES+476
[0x7: 1,-1] ei_ioe,_eoe,_aess=15,-1,-1 dsn=-1 ES+68
[0x7: 1,0] ei_ioe,_eoe,_aess=16,14,14 dsn=-1 ES+72
[0xe: 2,-1] ei_ioe,_eoe,_aess=17,-1,-1 dsn=-1 ES+76
[0xe: 2,0] ei_ioe,_eoe,_aess=18,15,-1 dsn=-1 ES+80
[0x18: 3,-1] ei_ioe,_eoe,_aess=19,-1,-1 dsn=-1 ES+84
[0x18: 3,0] ei_ioe,_eoe,_aess=20,16,15 dsn=-1 ES+88
[0x19: 4,-1] ei_ioe,_eoe,_aess=21,-1,-1 dsn=-1 ES+92
[0x19: 4,0] ei_ioe,_eoe,_aess=22,17,-1 dsn=-1 ES+96
[0x19: 4,1] ei_ioe,_eoe,_aess=23,18,-1 dsn=-1 ES+100
[0x19: 4,2] ei_ioe,_eoe,_aess=24,19,-1 dsn=-1 ES+104
[0x19: 4,3] ei_ioe,_eoe,_aess=25,20,-1 dsn=-1 ES+108
[0x19: 4,4] ei_ioe,_eoe,_aess=26,21,-1 dsn=-1 ES+112
[0x19: 4,5] ei_ioe,_eoe,_aess=27,22,-1 dsn=-1 ES+116
[0x19: 4,6] ei_ioe,_eoe,_aess=28,23,-1 dsn=-1 ES+120
[0x19: 4,7] ei_ioe,_eoe,_aess=29,24,-1 dsn=-1 ES+124
[0x19: 4,8] ei_ioe,_eoe,_aess=30,25,-1 dsn=-1 ES+128
[0x19: 4,9] ei_ioe,_eoe,_aess=31,26,-1 dsn=-1 ES+132
[0x19: 4,10] ei_ioe,_eoe,_aess=32,27,-1 dsn=-1 ES+136
[0x19: 4,11] ei_ioe,_eoe,_aess=33,28,-1 dsn=-1 ES+140
[0x19: 4,12] ei_ioe,_eoe,_aess=34,29,-1 dsn=-1 ES+144
[0x19: 4,13] ei_ioe,_eoe,_aess=35,30,-1 dsn=-1 ES+148
[0x19: 4,14] ei_ioe,_eoe,_aess=36,31,-1 dsn=-1 ES+152
[0x19: 4,15] ei_ioe,_eoe,_aess=37,32,-1 dsn=-1 ES+156
[0x19: 4,16] ei_ioe,_eoe,_aess=38,33,-1 dsn=-1 ES+160
[0x19: 4,17] ei_ioe,_eoe,_aess=39,34,-1 dsn=-1 ES+164
[0x19: 4,18] ei_ioe,_eoe,_aess=40,35,-1 dsn=-1 ES+168
[0x19: 4,19] ei_ioe,_eoe,_aess=41,36,-1 dsn=-1 ES+172
[0x19: 4,20] ei_ioe,_eoe,_aess=42,37,-1 dsn=-1 ES+176
[0x19: 4,21] ei_ioe,_eoe,_aess=43,38,-1 dsn=-1 ES+180
[0x19: 4,22] ei_ioe,_eoe,_aess=44,39,-1 dsn=-1 ES+184
[0x19: 4,23] ei_ioe,_eoe,_aess=45,40,-1 dsn=-1 ES+188
>> ES len=192, ED len=0, AES len=576, TI len=0
>> join_arr elements=46, eip_count=14, eiioe_count=14 broken_ei=0
Segmentation fault         sg_ses -vvvvvv --all --json --no-time /dev/sg12

@Rysz @minkshaman

Good news! I compiled sg3_utils in debug mode and did some GDB work, found the crash is due to a simple null pointer issue.

Then I applied a quick fix for this, re-compile it and replaced the Unraid's sg_ses binary, and now it works!

image.png

Here's the patch and the compiled sg_ses binary, an custom script may needed to replace the Unraid's binary on system startup.

$ diff -u src/sg_ses.c.old src/sg_ses.c
--- src/sg_ses.c.old	2025-11-28 23:26:36.834129707 +0800
+++ src/sg_ses.c	2025-11-28 23:27:50.410288483 +0800
@@ -6780,7 +6780,7 @@
         if (jsp->pr_as_json) {
             jo2p = sgj_new_unattached_object_r(jsp);
             sgj_js_nv_ihexstr(jsp, jo2p, et_sn, jrp->etype, NULL, cp);
-	    sgj_js_nv_s(jsp, jo2p, "descriptor", (const char *)(ed_bp + 4));
+	    if (ed_bp) sgj_js_nv_s(jsp, jo2p, "descriptor", (const char *)(ed_bp + 4));
             sgj_js_nv_i(jsp, jo2p, "element_number", jrp->indiv_i);
             sgj_js_nv_i(jsp, jo2p, "overall", (int)(-1 == jrp->indiv_i));
             sgj_js_nv_b(jsp, jo2p, "individual", (-1 != jrp->indiv_i));

sg_ses

  • Author
1 minute ago, Wu23333 said:

@Rysz @minkshaman

Good news! I compiled sg3_utils in debug mode and did some GDB work, found the crash is due to a simple null pointer issue.

Then I applied a quick fix for this, re-compile it and replaced the Unraid's sg_ses binary, and now it works!

image.png

Here's the patch and the compiled sg_ses binary, an custom script may needed to replace the Unraid's binary on system startup.

$ diff -u src/sg_ses.c.old src/sg_ses.c
--- src/sg_ses.c.old	2025-11-28 23:26:36.834129707 +0800
+++ src/sg_ses.c	2025-11-28 23:27:50.410288483 +0800
@@ -6780,7 +6780,7 @@
         if (jsp->pr_as_json) {
             jo2p = sgj_new_unattached_object_r(jsp);
             sgj_js_nv_ihexstr(jsp, jo2p, et_sn, jrp->etype, NULL, cp);
-	    sgj_js_nv_s(jsp, jo2p, "descriptor", (const char *)(ed_bp + 4));
+	    if (ed_bp) sgj_js_nv_s(jsp, jo2p, "descriptor", (const char *)(ed_bp + 4));
             sgj_js_nv_i(jsp, jo2p, "element_number", jrp->indiv_i);
             sgj_js_nv_i(jsp, jo2p, "overall", (int)(-1 == jrp->indiv_i));
             sgj_js_nv_b(jsp, jo2p, "individual", (-1 != jrp->indiv_i));

sg_ses

That is great news, thanks a lot for your effort, I'll package a patched version and we'll use that for the plugin!

I hope it will also resolve the issue for @minkshaman with the next update of the plugin.

10 minutes ago, Rysz said:

That is great news, thanks a lot for your effort, I'll package a patched version and we'll use that for the plugin!

glad to hear that, it'll be much more convenient. And thanks again for your excellent plugin!

  • Author
15 hours ago, Wu23333 said:

glad to hear that, it'll be much more convenient. And thanks again for your excellent plugin!

The update with the patch is now available, please let me know if it works for you now @Wu23333 @minkshaman .

@Rysz works for me, thanks

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.