In sh(1), the LINENO variable (currently executed line number) is always zero when it is read as part of a shell arithmetic expression.
$ echo $LINENO $((LINENO)) $(($LINENO))
108 0 108
Expected: 3 times "108" (or whatever the current line number is)
Note that $(($LINENO)) does work because it expands LINENO as a normal shell expansion before invoking the arithmetic subsystem. However, $((LINENO)) should be equivalent as it is for all other variables.
Another manifestation of the bug is:
$ set -u
$ echo $((LINENO))
-sh: arithmetic expression: variable not set: "LINENO"
Created attachment 206211 [details]
A potential fix
This is my first attempt at submitting a patch to FreeBSD. I'm not sure if it's good practice to submit a potential patch directly to the bug report or to first have it reviewed elsewhere such as the mailing lists.