6 ms·
Non-twitter link: https://nitter.net/morganherlocker/status/1730455721815527429 https://nitter.net/morganherlocker/status/173045572181552742... (edit: I'm not t
by mtmail 3y ago
Non-twitter link: https://nitter.net/morganherlocker/status/1730455721815527429 https://nitter.net/morganherlocker/status/173045572181552742... (edit: I'm not the author)
"Notified today that my insulin pump controller has a bug where the leading decimal point will be dropped, ie: changing a dose of .21 units to 21 units. I can reproduce randomly ~1 in 5 times so probably a race condition. Easily one of the worst software bugs I have ever heard of."
- jmrjmr 3y agoWhat brand/model?
- patagurbon 3y agoOmnipod 5 when using the Android app as the controller
- stranded22 3y agoTy - wife is T1D and waiting for closed loop with omnipod. Might wait a little longer…
- yankoff 3y agoDamn, that's the one I'm using although with a separate controller. I've been looking forward for the iPhone app that is supposed to come out in 2024.
- numpad0 3y ago> using the Android app as the controller
- sidewndr46 3y agowouldn't this put someone into a state of insulin shock?
- yankoff 3y agoIt will drop the blood sugar level dangerously low and cause hypoglycemia. A person can lose consciousness, get into a coma, or even die.
- deleted 3y ago[deleted]
- wwilim 3y agoIf you wanted 0.66 units and got 66 units, I am pretty sure you would die. I would count on the tissue around the infusion site not having enough throughput to release it all into your system at once and swelling up. This would mean the problem would spread over a few hours, but it would be an extreme emergency anyway. To put it into perspective (at least with my insulin to carb ratio, it varies from person to person), if you wanted to drink a regular sized can of coke, you would dose 3.3u. 66u is therefore enough insulin for 20 cans of coke. Another way to put it is that 10g of sugar ~ 1u of insulin. You'd have to eat 660g of raw sugar. There is a medication called Glucagen which is used to treat severe hypo. It works by triggering release of stored glucose from the liver. The thing is, from what I've quickly googled, a typical 1mg dose is usually only enough to raise your blood sugar by about 100mg/dl, and then your store is depleted and further doses have no effect. With my insulin/carb ratio, I would only need about 2.5u to reduce my blood sugar by 100mg/dl. All of a sudden it feels scary to think that the reservoir in my pump holds about 300u of insulin...
- pixl97 3y agoHeh, yea, this is why when I went to DEFCON I disconnected the feed to my body. I mean it's not likely someone's going to try to murder me via bluetooth, but why take the risk when I didn't have to. In the days before I had a pump I did something similar to myself. I had a short acting insulin and long acting insulin both in pen form. Managed to give myself the large overnight dose which should have been the long acting with the short acting pen. After about 15 minutes I realized something was up when I felt the low coming on and spent the next 2 hours drinking a disgusting amount of orange juice.
- auggierose 3y agoFor software like that, not sure how anything other than formally proven correct software is acceptable. And note, no type system is gonna help you with a bug like that.
- chlorion 3y agoI don't know very much about formal methods but I would assume the type system plays an important role for encoding that specific states can or cant exist.
- asfarley 3y agoBut a high reading is a state that can exist. I don’t really see how formal methods would exclude a multiplication/unit error with respect to the displayed unit.
- layer8 3y agoWith the right type system, any formal proof can be represented in it, and the type checker will verify the proof. Any fault that remains can also remain with a formal proof. Look up Curry–Howard isomorphism.
- auggierose 3y agoObviously I mean an ML-like type system with automatic inference. Otherwise it is just general logic, and you definitely don't need types for that. And Curry-Howard is the most overrated isomorphism in history. It may make computer scientists head explode, but mathematicians can live without it. And yes, I know that Lean is based on it, and Tao is using it, and he just doesn't know better. Sorry.
- layer8 3y agoType inference is largely orthogonal to the question. The point is, any formal proof you could do outside a type system you can also do within a type system, so yes the right type system would help you avoid such bugs.
- e2le 3y agoIt sounds like the bug was in the Android app. Shouldn't the microcontroller (on the pump) be validating dose values received? (dose > MAX_DOSE) ? return DOSE_TOO_HIGH : return DOSE_ACCEPTED; 20 units is obviously dangerous for a single dose.
- jacquesm 3y agoAbsolutely. The App should be considered hostile by the pump firmware until proven otherwise.
- patagurbon 3y agoThis is quite the overreaction. There is both a confirmation screen and a maximum bolus setting to ameliorate the issue until an OTA update can be provided. Stranding users who use the app without access to our lifesaving medical device is... Bold, to say the least.
- jacquesm 3y agoIf you are a diabetic you should always have a plan B for your 'lifesaving medical device' because they can break. For instance: https://www.northwoodsendocrinology.com/wp-content/uploads/2018/10/Insulin-Pump-Back-Up-Plan.pdf https://www.northwoodsendocrinology.com/wp-content/uploads/2... Presumably whoever provided you your pump has a similar instruction. Risking using an app/pump combo that has a known flaw, especially a non-deterministic one is bold, to say the least. Safer to switch to the regular controller (assuming you have it) until this is fixed.
- grayhatter 3y agoWhat you mean to say is completely correct. What you actually said is wrong, there's a huge delta between hostile and unproven. The pump firmware should assert it's own safety and sanity checks. Which is different from hostility.
- jacquesm 3y ago
- bradknowles 3y agoTherac-25 walks into the chat. See: https://en.wikipedia.org/wiki/Therac-25 https://en.wikipedia.org/wiki/Therac-25