This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Thingy91: pynrfjprog deadlocks at 100% cpu usage

I'm using the script from https://devzone.nordicsemi.com/f/nordic-q-a/53208/updating-nrf9160-modem-firmware-through-the-command-line/215357#215357

Under strace, it never forks any other process and doesn't create the file it's looking for, so I'm really not sure what it's expecting to happen.

Full strace at http://triffid-hunter.no-ip.info/pynrf-flash.strace since this forum thing keeps throwing errors when I try to attach it.

https://devzone.nordicsemi.com/f/nordic-q-a/62397/nrfjprog-bug-gets-stuck-due-to-temporary-directory-permissions seems related however my permissions are fine, and the directory tree in /tmp is recreated identically if I wipe it first.

Since this is apparently the only way to update the NRF91 modem firmware from a terminal, and all the examples seem to be complaining about out-of-date modem firmware, I'm once again stuck.

Parents
  • Relevant section of strace, in case it helps:

    stat("/home/triffid/Projects/NRF/NRFCommandLineTools-10.9.0/JLink_Linux_V680a_x86_64/", {st_mode=S_IFDIR|0755, st_size=1550, ...}) = 0
    openat(AT_FDCWD, "/home/triffid/Projects/NRF/NRFCommandLineTools-10.9.0/JLink_Linux_V680a_x86_64/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
    fstat(3, {st_mode=S_IFDIR|0755, st_size=1550, ...}) = 0
    getdents64(3, /* 57 entries */, 32768)  = 2112
    getdents64(3, /* 0 entries */, 32768)   = 0
    close(3)                                = 0
    stat("/", {st_mode=S_IFDIR|0755, st_size=178, ...}) = 0
    openat(AT_FDCWD, "/tmp/nrfjprogdll/highlevel", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
    fstat(3, {st_mode=S_IFDIR|0755, st_size=180, ...}) = 0
    getdents64(3, /* 9 entries */, 32768)   = 328
    getdents64(3, /* 0 entries */, 32768)   = 0
    close(3)                                = 0
    lstat("/tmp/nrfjprogdll/highlevel", {st_mode=S_IFDIR|0755, st_size=180, ...}) = 0
    stat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=420, ...}) = 0
    getpid()                                = 18780
    lstat("/tmp/file12YHdh", 0x7ffd8bf8a1d0) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh.lock", 0x7ffd8bf8a120) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh.lock", 0x7ffd8bf8a070) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/tmp/nrfjprogdll/highlevel/file12YHdh.lock", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf89e90) = -1 ENOENT (No such file or directory)
    stat("/", {st_mode=S_IFDIR|0755, st_size=178, ...}) = 0
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)

    And repeats indefinitely until killed.

    Where is this "/tmp/nrfjprogdll/highlevel/file12YHdh" file supposed to come from, and why does the python library busy loop on checking if it exists?

Reply
  • Relevant section of strace, in case it helps:

    stat("/home/triffid/Projects/NRF/NRFCommandLineTools-10.9.0/JLink_Linux_V680a_x86_64/", {st_mode=S_IFDIR|0755, st_size=1550, ...}) = 0
    openat(AT_FDCWD, "/home/triffid/Projects/NRF/NRFCommandLineTools-10.9.0/JLink_Linux_V680a_x86_64/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
    fstat(3, {st_mode=S_IFDIR|0755, st_size=1550, ...}) = 0
    getdents64(3, /* 57 entries */, 32768)  = 2112
    getdents64(3, /* 0 entries */, 32768)   = 0
    close(3)                                = 0
    stat("/", {st_mode=S_IFDIR|0755, st_size=178, ...}) = 0
    openat(AT_FDCWD, "/tmp/nrfjprogdll/highlevel", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
    fstat(3, {st_mode=S_IFDIR|0755, st_size=180, ...}) = 0
    getdents64(3, /* 9 entries */, 32768)   = 328
    getdents64(3, /* 0 entries */, 32768)   = 0
    close(3)                                = 0
    lstat("/tmp/nrfjprogdll/highlevel", {st_mode=S_IFDIR|0755, st_size=180, ...}) = 0
    stat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=420, ...}) = 0
    getpid()                                = 18780
    lstat("/tmp/file12YHdh", 0x7ffd8bf8a1d0) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh.lock", 0x7ffd8bf8a120) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh.lock", 0x7ffd8bf8a070) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/tmp/nrfjprogdll/highlevel/file12YHdh.lock", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf89e90) = -1 ENOENT (No such file or directory)
    stat("/", {st_mode=S_IFDIR|0755, st_size=178, ...}) = 0
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)
    stat("/tmp/nrfjprogdll/highlevel/file12YHdh", 0x7ffd8bf8a230) = -1 ENOENT (No such file or directory)

    And repeats indefinitely until killed.

    Where is this "/tmp/nrfjprogdll/highlevel/file12YHdh" file supposed to come from, and why does the python library busy loop on checking if it exists?

Children
No Data
Related