---
# System prepended metadata

title: Agenda for Lmod Zoom Mtg 2022-05-03

---

# Agenda for Lmod Zoom Mtg 2022-05-03

- Print message when unloading a module that wasn't loaded (Issue #576)
- How TCL break and LmodBreak is handled in Lmod
- Q&A

## Attendees

- Robert McLay (TACC, US)
- Kenneth Hoste (HPC-UGent, Belgium)
- Kurt Lust (Univ. of Antwerp, Belgium - LUMI User Support Team)
- Matthew Cawood (TACC, US)
- Ward Poelmans (Vrije Universiteit Brussel, Belgium)
- Mikael Öhman (Chalmers University of Technology, Sweden)
- Bennet Fauber (Univ. of Michigan, US)

## Notes

### Print message when unloading module that wasn't loaded

- see https://github.com/TACC/Lmod/issues/576
- "warning" message will be printed, but exit code will remain zero
- was implemented on request by Spack developers
- not included in an Lmod release yet
- Kenneth will try to run EasyBuild test suite on top of Lmod that includes this change
- EasyBuild already sets $LMOD_QUIET, so won't be affected by this
    - and it probably doesn't unload modules anyway (especially none that are not loaded)

### How Tcl break and LmodBreak is handled in Lmod

- slides available at https://github.com/TACC/Lmod/blob/master/my_docs/22/lmod_zoom_mtg_2022_05_03/presentation.pdf
- `break` statement outside of a loop in Tcl is an error (and we'll take advantage of that)
- when a break statement is hit, *none* of the changes specified by that module file get applied (and *only* that module will not be loaded)
- top of FrameStk is (in some sense) buffer of changes that are made by module file which is being loaded
    - if break happens, all those changes are ignored by kicking out the top of the stack (see `M.LmodBreak` function)

## Q&A

- Robert has not found time yet to look into problem reported by Bennet via Lmod-users mailing list
    - see https://sourceforge.net/p/lmod/mailman/message/37648391/
    - Lmod is producing traceback 3/5 times?!
    - traceback are even not consistent
    - using Lmod 8.6.x on top of Lua 5.3 (RHEL8)
    - looping over hash tables in Lua 5.3 happens in random order of keys (way more than Lua 5.1 did), which could be relevant here...
    - problem is happening on bare `module avail` or `module spider`, also with `module spider foo`
    - Bennet should try the `check_module_tree_syntax` tool (module file linter)
    - traceback suggests towards loop being triggered
    - could be related to having a module file that is changing `$MODULEPATH` with location of module file being loaded
- Mikael's issue (https://github.com/TACC/Lmod/issues/575)
    - no answer yet on this...
    - looks like Lmod will need to have AI capabilities?

- LmodError vs LmodWarning
    - LmodError: totally cancels whole `module` command
    - LmodWarning prints a warning and does non-zero exit
    - LmodBreak: stops processing module being loaded, doesn't apply changes, cancels rest of module command

## Next meeting

- Tue June 7th 2022 at 09:30 US Central (14:30 UTC)
- topic: explaining how `module load` is processed by Lmod, stepping through the codebase
- future topics: how module name is converted into an internal object in Lmod codebase