Server freezes when plugin kicks player via UB #185


  • Defect
  • Waiting
Open
Assigned to _ForgeUser7037478
  • _ForgeUser8430440 created this issue Dec 23, 2013

    What steps will reproduce the problem?
    1. When a plugin uses the console to /kick a player.

    What is the expected output?
    A player disconnect

    What do you see instead?
    Message: "Player has been kicked by Server. Reason: xxxx"
    The server crashes/freezes after this message. The server will need to be killed and restarted in order to accept players again

    What version of the Ultrabans are you using?
    3.1.0

    What version of the Craftbukkit are u using?
    "This server is running CraftBukkit version git-Bukkit-1.7.2-R0.2-b2974jnks (MC: 1.7.2) (Implementing API version 1.7.2-R0.2)"

    Do you have an error log of what happened?
    There is no log, just the message as said above.

    Please provide any additional information below.
    Both our custom plugin and NoCheatPlus are made to use Ultrabans to kick players, so the kicks get logged. If i log on to the console (McMyAdmin (both web panel as the console window)) and kick a player, expected behaviour is shown.

    If any more information is needed, please feel free to ask. I have reported this as a Bukkit bug, but was told that this was a plugin error.
    https://bukkit.atlassian.net/browse/BUKKIT-5229

    Thank you for your time.

  • _ForgeUser8430440 added the tags New Defect Dec 23, 2013
  • Haarolean posted a comment Dec 24, 2013

    Last ultrabans version is not compatible with craftbukkit for versions from ~ 1.6 ~ 1.7. It's not bukkit problem, however, also according to plugin is not updated. Ticket is declined due incompatibility. But i want to have JVM dump of your server after this bug occurs. You can google through it, there are few ways for getting JVM dump, depends on your OS. Post it on pastebin(unlisted or private) and provide link here or in my PM.

  • Haarolean removed a tag New Dec 24, 2013
  • Haarolean added a tag Waiting Dec 24, 2013
  • _ForgeUser8430440 posted a comment Dec 25, 2013

    http://pastebin.com/g09ZTKbE

    I sincerely hope this is what you mean, as another dump is over 7 gigabytes big. I do not know much about Java, hence why i am not sure about what you mean. This is a thread dump from VisualVM, ran on Windows Server R2 x64, with the Java version described in the top of the paste. I can give further information if this is required.

    Thanks for your help.

  • _ForgeUser8430440 removed a tag Waiting Dec 25, 2013
  • _ForgeUser8430440 added a tag Replied Dec 25, 2013
  • Haarolean posted a comment Dec 25, 2013

    @APlant641: Go

    I can't say exactly what produces such problem (due there's n support for 1.7 currently). Sure it can be ultrabans due outdated code. Try to reproduce this problem without running your custom plugin/NCP/HawEye :)

  • Haarolean removed a tag Replied Dec 25, 2013
  • Haarolean added a tag Waiting Dec 25, 2013
  • _ForgeUser8430440 posted a comment Dec 25, 2013

    @Zeluboba: Go

    I'll have a look, i'll also see if i can reproduce it via Jsonapi, which according to my current theory shouldn't work either, i'll let you know :)

  • _ForgeUser8430440 removed a tag Waiting Dec 25, 2013
  • _ForgeUser8430440 added a tag Replied Dec 25, 2013
  • _ForgeUser8430440 posted a comment Dec 25, 2013

    Alright, our custom plugin has been deactivated on everything that uses Ultraban kicks (it is vital for our server to run), NCP has been kicked out because it was bugging me to bits anyway, and Hawkeye shouldn't be doing anything kick related anyway. I have not been able to reproduce the problem, mainly because i don't know how, as the swear filter kick, and Nocheat kicks have been the only kicks that i have seen the server crashing on.

    EDIT: Now i think of it, it happens with /kickall aswell, when it kicks everybody off with a message (programmed in) Although i have not seen this happen with the plugins removed, i'll see what happens at the daily restart.


    Edited Dec 25, 2013
  • _ForgeUser8430440 posted a comment Dec 26, 2013

    Yes it does happen with the daily restart, this is the final part of my logs:

    2013-12-26 04:00:00 [INFO] Server is restarting. World is being saved. 
    2013-12-26 04:00:00 [INFO] CONSOLE: Enabled level saving..
    2013-12-26 04:00:00 [INFO] CONSOLE: Forcing save..
    2013-12-26 04:00:06 [INFO] CONSOLE: Save complete.
    2013-12-26 04:00:06 [INFO] CONSOLE: Stopping the server..
    2013-12-26 04:00:06 [INFO] xx1 lost connection: Server is restarting
    2013-12-26 04:00:06 [INFO] xx1 left the game.
    2013-12-26 04:00:06 [INFO] xx2 lost connection: Server is restarting
    

    Where xx1 and xx2 are two separate players. Sadly, as it was rather early in the morning, i have not been able to get a thread dump from that.

    Something else of possibly important priority: Another developer in my staff team has made a plugin that replaces the kicking part of our custom plugin. And oddly enough this works without crashing the server. If you want, i can ask the developer permission to paste the part of the code to you to show you differences.

  • Haarolean posted a comment Dec 26, 2013

    @APlant641: Go

    Yep, fill free to show old and new code.

  • Haarolean removed a tag Replied Dec 26, 2013
  • Haarolean added a tag Waiting Dec 26, 2013
  • _ForgeUser8430440 posted a comment Dec 26, 2013

    The nonworking plugin: p = player

    runAsConsole("kick " + p.getName() + " Watch your language");
    
       public void runAsConsole(String command) {
         Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), command.toString());
       }
    

    And now comes the working one:

    getServer().dispatchCommand(getServer().getConsoleSender(), "kick " + playerString + " Watch your language");
    

    Might it be that the top plugin links to a function, or whatever they are called in Java (im more of a PHP guy). I am currently not able to edit the top one, as it is a massive plugin, (and honestly a bit badly written). If i happen to edit that, i'll let you know the results.

    The new/working plugin does have problems with temp ban now. (a 3 day autoban 6th swear). Same symptoms.


    Edited Dec 27, 2013
  • _ForgeUser8430440 removed a tag Waiting Dec 26, 2013
  • _ForgeUser8430440 added a tag Replied Dec 26, 2013
  • Haarolean posted a comment Jan 11, 2014

    @APlant641: Go

    There's no difference between Bukkit. and getServer().getConsoleSender() call, except first one is static. So what is command variable and playerString? Both.

  • Haarolean removed a tag Replied Jan 11, 2014
  • Haarolean added a tag Waiting Jan 11, 2014

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