Mordekaiser at one point in history had over 50 known bugs. (apparently over 200 according to another commenter)
Some champs could walk through Jarvan's ultimate.
There were others but those are the cases that stand out in my memory. I know you'll probably say something like "three bugs? that's nothing!" but I played the game off and on for 6 years from 2009-2015 and there were plenty of examples of stuff like that.
The first was a reliance on kludges in new code (like that Lux ult) - it was the distinctive look of a team trying to put out new features faster than their dev time permitted.
The second was an inability to rely on invariants. Most games can say "X is always true, Y is always true except in case Z" and maintain that even across many and expansions. League (and other MOBAs) relied on putting out new characters with novel, interesting abilities. But that leaves game design and software design in conflict; a major source of novelty is breaking rules other characters share. And so everyone has some silly special case that makes all other development harder, and also reveals the kludges in problem one.
Mordekaiser can copy dead units, so every single unit has to be checked to not break when he does that. Lux ults are made of minions, so every character with a "dash to minion" ability has to be safeguarded against dashing to the ult. And so on, for characters^2 interactions.
Things are vastly better than they used to be, but it's not a surprise the thing got a reputation for bugginess.
My personal favorites are when that update to Skarner broke Lux's ult (how are those related at all?) and when they first added the smite damage to the HUD which broke flash because the UI wasn't designed to display that data (flash's cooldown would get set to smite's damage as it's cooldown, or about 500 seconds early game).
https://www.youtube.com/watch?v=xeFJvdSnB9o
One of their lead champion designers has even come out and said something along the lines that many champion's dashes are coded separately, even though a dash would be something pretty easy to reuse. I'm pretty sure the champion ability scripts are written by the champion designers and not formal engineers/programmer base on comments like this one and others I've seen on reddit from Riot's champion designers.
See [0] for the best example, but while now that those are documented it's clear that that's the worst case, a good number of champions contented for the Most Bugged crown over the years, even months after being released or still unfixed to date.
Other than that the new CEF client is still more buggy and unstable than the old one (same guy who made the above list also had one for the client although that hasn't been updated in months AFAIK) and at any time there has always been some sort of bug related to pathing, vision, or targeting.
Also I'm not 100% sure about the last year, but I think there as never been one since at least when I started playing in 2013 when some near-gamebreaking champion bug didn't make it to the "LTS" patch fixed for the LCS.
[0] https://boards.euw.leagueoflegends.com/en/c/bug-reports-eu/a...
lolwut? Back when I used to play LoL, there was almost -zero- bugs in the actual game.
Are you sure you're not confusing this with their shitty Adobe Air client (which does not run the actual game, which is a separate process).
I will append a disclaimer: Have not played LoL in years. So if it has changed, feel free to tell me so.