It's "turtle.dropUp()", not "turtle.dropup()". Case sensitivity matters.
When a computer/turtle starts running code, ComputerCraft starts a ten second timer. If that code doesn't yield before that timer ends then ComputerCraft crashes that computer. After each yield, processing continues with a new time limit.
The reason why is that running your code chews up valuable server processing power, and so it shouldn't be able to monopolise it. In fact, only ONE CC device can run code at a time: While one is doing something, none of the others can do
anything until it yields.
Whether or not it takes more then ten seconds for your code to execute has a lot to do with the power of the Minecraft server it's running on, and how often you allow your code to yield. Pulling events (eg getting typed characters) or sleeping triggers a yield, and many commands (eg turtle movements or getting text input from the user) have to pull events to work anyway.
Your code doesn't perform any actions that yield unless items are constantly injected into the turtle's inventory. If there's a lull in the input for a while, it'll crash.
You could make use of the
turtle_inventory event to yield until the inventory receives an item. Just drop
os.pullEvent("turtle_inventory") in as the first line within your loop.