This is my webcamd working normally (from journalctl -u webcamd):
Dec 11 01:47:14 octopi webcamd[341]: Starting up webcamDaemon...
Dec 11 01:47:14 octopi webcamd[341]: --- Configuration: ----------------------------
Dec 11 01:47:14 octopi webcamd[341]: cfg_file: /boot/octopi.txt
Dec 11 01:47:14 octopi webcamd[341]: camera: auto
Dec 11 01:47:14 octopi webcamd[341]: usb options: -r 640x480 -f 10
Dec 11 01:47:14 octopi webcamd[341]: raspi options: -fps 10
Dec 11 01:47:14 octopi webcamd[341]: http options: -w ./www-octopi -n
Dec 11 01:47:14 octopi webcamd[341]: Explicitly USB device:
Dec 11 01:47:14 octopi webcamd[341]: -----------------------------------------------
Dec 11 01:47:14 octopi webcamd[341]: Found video devices:
Dec 11 01:47:14 octopi webcamd[341]: /dev/video0
Dec 11 01:47:14 octopi webcamd[341]: /dev/video10
Dec 11 01:47:14 octopi webcamd[341]: /dev/video11
Dec 11 01:47:14 octopi webcamd[341]: /dev/video12
Dec 11 01:47:14 octopi webcamd[341]: raspi
Dec 11 01:47:14 octopi webcamd[341]: config file='/boot/octopi.txt':USB device was not set in options, start MJPG-streamer with the first found video device: /dev/video0
Dec 11 01:47:14 octopi root[419]: Starting USB webcam
Dec 11 01:47:14 octopi webcamd[341]: <13>Dec 11 01:47:14 root: Starting USB webcam
Dec 11 01:47:14 octopi webcamd[341]: Running ./mjpg_streamer -o output_http.so -w ./www-octopi -n -i input_uvc.so -r 640x480 -f 10 -d /dev/video0
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: starting application
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: MJPG Streamer Version: git rev: 501f6362c5afddcfb41055f97ae484252c85c912
Dec 11 01:47:14 octopi webcamd[341]: MJPG Streamer Version: git rev: 501f6362c5afddcfb41055f97ae484252c85c912
Dec 11 01:47:14 octopi webcamd[341]: i: Using V4L2 device.: /dev/video0
Dec 11 01:47:14 octopi webcamd[341]: i: Desired Resolution: 640 x 480
Dec 11 01:47:14 octopi webcamd[341]: i: Frames Per Second.: 10
Dec 11 01:47:14 octopi webcamd[341]: i: Format............: JPEG
Dec 11 01:47:14 octopi webcamd[341]: i: TV-Norm...........: DEFAULT
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: Using V4L2 device.: /dev/video0
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: Desired Resolution: 640 x 480
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: Frames Per Second.: 10
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: Format............: JPEG
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: TV-Norm...........: DEFAULT
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)
Dec 11 01:47:14 octopi webcamd[341]: o: www-folder-path......: ./www-octopi/
Dec 11 01:47:14 octopi webcamd[341]: o: HTTP TCP port........: 8080
Dec 11 01:47:14 octopi webcamd[341]: o: HTTP Listen Address..: (null)
Dec 11 01:47:14 octopi webcamd[341]: o: username:password....: disabled
Dec 11 01:47:14 octopi webcamd[341]: o: commands.............: disabled
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: www-folder-path......: ./www-octopi/
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: HTTP TCP port........: 8080
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: HTTP Listen Address..: (null)
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: username:password....: disabled
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: commands.............: disabled
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: starting input plugin input_uvc.so
Dec 11 01:47:14 octopi mjpg_streamer[420]: MJPG-streamer [420]: starting output plugin: output_http.so (ID: 00)
Dec 11 01:47:15 octopi webcamd[341]: Done bring up all configured video device
Dec 11 01:47:15 octopi webcamd[341]: Goodbye...
Dec 11 01:47:15 octopi systemd[1]: Started the OctoPi webcam daemon with the user specified config.
This is where shit hit the fan (not sure if there is a way I can get this to log more verbosely?):
Dec 11 08:07:05 octopi webcamd[341]: i: select() timeout
Dec 11 08:07:05 octopi webcamd[341]: i: cleaning up resources allocated by input thread
Dec 11 08:07:05 octopi mjpg_streamer[420]: MJPG-streamer [420]: select() timeout
Dec 11 08:07:05 octopi mjpg_streamer[420]: MJPG-streamer [420]: cleaning up resources allocated by input thread
This happenend after I ran "sudo service webcamd restart":
Dec 11 10:34:27 octopi systemd[1]: Stopping the OctoPi webcam daemon with the user specified config...
Dec 11 10:34:27 octopi systemd[1]: webcamd.service: Main process exited, code=killed, status=15/TERM
Dec 11 10:34:27 octopi systemd[1]: webcamd.service: Succeeded.
Dec 11 10:34:27 octopi systemd[1]: Stopped the OctoPi webcam daemon with the user specified config.
Dec 11 10:34:27 octopi systemd[1]: Starting the OctoPi webcam daemon with the user specified config...
The rest sounds normal, and it's been working since.
So the more permanent solution was running the following three steps in SSH:
sudo apt-get update --fix-missing
sudo apt-get upgrade
sudo reboot
As @foosel correctly pointed out, it's not Octoprint's fault if the Octopi enviroment it is running on becomes outdated.
So unless you frequently re-etch the latest Octopi to your SD card anyways, this is probably one of the default maintenance actions you have to do once in a while to prevent Octopi from eventually going downhill...
Again maybe at some point we can get an additional reboot option to execute these steps into octoprint's top bar (in addition to reboot system, shutdown system, there could be a new "udpate and reboot system" option doing effectively the above).