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
  • With logging.basicConfig(level=logging.DEBUG) I get this:

    INFO:modem_update:Modem firmware upgrade
    DEBUG:pynrfjprog.HighLevel:HighLevel_logger_open
    DEBUG:pynrfjprog.HighLevel:HighLevel_logger_open: nRFJProg logger opened to callback at address 0X7F49C2B28010
    DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open
    DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open: Found J-Link library at "/".
    DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open: Copying Segger dll to temporary folder to allow a new probe connection.
    DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open: Copy "/"->"/tmp/nrfjprogdll/highlevel/filew8XONI"
    *** (deadlocks here until killed)
    Terminated

    But despite saying it's copying, it never attempts to copy anything:

    17292 lstat("/tmp/filew8XONI", 0x7ffc94e44b90) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI.lock", 0x7ffc94e44ae0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI.lock", 0x7ffc94e44a30) = -1 ENOENT (No such file or directory)
    17292 openat(AT_FDCWD, "/tmp/nrfjprogdll/highlevel/filew8XONI.lock", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
    17292 getpid() = 17292
    17292 write(2, "DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open:\tCopy \"/\"->\"/tmp/nrfjprogdll/highlevel/filew8XONI\"\n", 97) = 97
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44850) = -1 ENOENT (No such file or directory)
    17292 stat("/", {st_mode=S_IFDIR|0755, st_size=178, ...}) = 0
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)

    I can't find any instance of the word "Copy" in ~/.local/lib/python3.7/site-packages/pynrfjprog or github.com/.../pynrfjprog other than unrelated copyright notices, so I'm not sure where the message "Copy / -> /tmp/..." and associated code is.

Reply
  • With logging.basicConfig(level=logging.DEBUG) I get this:

    INFO:modem_update:Modem firmware upgrade
    DEBUG:pynrfjprog.HighLevel:HighLevel_logger_open
    DEBUG:pynrfjprog.HighLevel:HighLevel_logger_open: nRFJProg logger opened to callback at address 0X7F49C2B28010
    DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open
    DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open: Found J-Link library at "/".
    DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open: Copying Segger dll to temporary folder to allow a new probe connection.
    DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open: Copy "/"->"/tmp/nrfjprogdll/highlevel/filew8XONI"
    *** (deadlocks here until killed)
    Terminated

    But despite saying it's copying, it never attempts to copy anything:

    17292 lstat("/tmp/filew8XONI", 0x7ffc94e44b90) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI.lock", 0x7ffc94e44ae0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI.lock", 0x7ffc94e44a30) = -1 ENOENT (No such file or directory)
    17292 openat(AT_FDCWD, "/tmp/nrfjprogdll/highlevel/filew8XONI.lock", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
    17292 getpid() = 17292
    17292 write(2, "DEBUG:pynrfjprog.HighLevel:HighLevel_dll_open:\tCopy \"/\"->\"/tmp/nrfjprogdll/highlevel/filew8XONI\"\n", 97) = 97
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44850) = -1 ENOENT (No such file or directory)
    17292 stat("/", {st_mode=S_IFDIR|0755, st_size=178, ...}) = 0
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)
    17292 stat("/tmp/nrfjprogdll/highlevel/filew8XONI", 0x7ffc94e44bf0) = -1 ENOENT (No such file or directory)

    I can't find any instance of the word "Copy" in ~/.local/lib/python3.7/site-packages/pynrfjprog or github.com/.../pynrfjprog other than unrelated copyright notices, so I'm not sure where the message "Copy / -> /tmp/..." and associated code is.

Children
No Data
Related