Internal server error when rendering Letter #101

  • Defect
  • Accepted
Assigned to _ForgeUser8106975
  • _ForgeUser8553152 created this issue Apr 6, 2013

    What steps will reproduce the problem?
    1. Rename the player.dat to your minecraft nickname.
    2. (re)Place this .dat file in your world file > players
    3. Start server with Courier installed
    4. Try to log in.

    What is the expected output? What do you see instead?
    Expected: simply log in.
    Instead: You get kicked with the message: Internal server error

    What version of Courier are you using?

    What version of CraftBukkit ("Bukkit") are you using? 1.0.1-R1, dev build number etc.
    1.5.1-R0.1 #2735

    Do you have an error log of what happened?

    Please provide any additional information below.
    We have had this issue multiple times now and I thought it would be fixed anytime by craftbukkit, but when I start the server without courier installed, I can log in again. Until now I always worked around this error by deleting the players file.

    Since this error comes from courier, we know it is a letter giving this instakick bug. If it is possible to detect this but you can't fix the letter, maybe try to delete it before the player gets kicked. That's always better than deleting the whole inventory.

  • _ForgeUser8553152 added the tags New Defect Apr 6, 2013
  • _ForgeUser8553152 added an attachment player.dat Apr 6, 2013


    <p>Corrupted player.dat (with Courier installed)</p>

  • _ForgeUser8553152 added an attachment Apr 6, 2013
    Attachment was deleted Dec 3, 2016
  • _ForgeUser8106975 posted a comment Apr 6, 2013

    Alright, so the issue is indeed in CraftBukkit code, sprite here is null yet they call getWidth():

    CharacterSprite sprite = font.getChar(text.charAt(i));
                for (int r = 0; r < font.getHeight(); ++r) {
                    for (int c = 0; c < sprite.getWidth(); ++c) {
                        if (sprite.get(r, c)) {
                            setPixel(x + c, y + r, color);

    Now, I can't replicate this with your player.dat unfortunately since I don't have the message referenced in that players inventory in my message database. What it does seem like is that the player name is corrupted (?) and thus when trying to render it in a Letter ("Mail from xxxx") Bukkit crashes.

    So, I guess the real issue is that your players' .dat files get corrupted - but that's not due to Courier is it? Anyways, I've made a blind code change that could possible function as a workaround for you to test - check your PMs.

    (If this otoh happens to a regular player name then I'd very much like to know which characters it contains ... :)

  • _ForgeUser8106975 removed a tag New Apr 6, 2013
  • _ForgeUser8106975 added a tag Waiting Apr 6, 2013
  • _ForgeUser8553152 posted a comment Apr 6, 2013

    Ah of course. I was already surprised you couldn't replicate the bug!

    In order for you to replicate this issue, I've uploaded our configuration file including the messages etc.

    --Edit: btw. The affected player was lucb2000.
    When starting the server without Courier installed, you can see that 1 letter is also sent by lucb2000.
    Then there is 1 other letter with some random IP.--

    Edited Apr 6, 2013
  • _ForgeUser8553152 removed a tag Waiting Apr 6, 2013
  • _ForgeUser8553152 added a tag Replied Apr 6, 2013
  • _ForgeUser8106975 removed a tag Replied Apr 7, 2013
  • _ForgeUser8106975 posted a comment Apr 7, 2013

    The bug has been identified and fixed in the latest development branch. It's caused by other plugins doing things "under the hood" affecting Courier and should thus be quite rare. Thus I won't release a new version with this fix only, if I don't receive any information that it's more common than I thought.

    If you run a server and this bug happens to you, please contact me through PM and you'll immediately receive a fixed development version.

    Edited Apr 8, 2013
  • _ForgeUser8106975 added a tag Accepted Apr 7, 2013

To post a comment, please login or register a new account.