Menu

Stupid OneLiner crashing PC-BASIC

Anonymous
2017-05-23
2017-05-23
  • Anonymous

    Anonymous - 2017-05-23

    here the source:
    10 PRINT CHR$(INT(RND(1)255));:GOTO 10

    GW-BASIC 3.23 under real DOS or DOSBox have no problems whatsoever with it.

     
  • Rob Hagemans

    Rob Hagemans - 2017-05-25

    Thanks for your report.

    I'm sorry, but I cannot reproduce this bug with the information provided. On my setup, your one-liner (inserting the * that presumably got lost in SourceForge's markdown handling) prints random characters, regularly clearing the screen - as expected. I have tried both 15.08.11 and 16.12.0rc0 on both Windows 7 32-bit and 64-bit Ubuntu Linux and none of these crash for me.

    Note that the image you have attached is not visible/accessible to me - perhaps a permissioning problem?

    It would help to debug this if you let me know what version you are using and what operating system (including the version and whether it is 32-bit or 64-bit), and attach any error messages you receive (be it the exception screen in PC-BASIC or a command-line message).

    If you get an exception screen (blue or red background), please paste the contents here and attach the crash log, which is a file saved to a location shown on the exception screen in newer versions.

    Thanks
    Rob

     
    • spaglia

      spaglia - 2017-06-08

      Rob,

      I can reproduce this with 15.08.11 after several attempts.

      Steve

       
  • Rob Hagemans

    Rob Hagemans - 2017-06-08

    Hi Steve, thanks for trying this! Have you identified a way to trigger the crash by any chance? Is there an error message./crash log/stack trace or anything that would help debugging it?
    For now I'm still unable to reproduce this myself, even after a few attempts.

    Are you using 64-bit Windows, by any chance? This crach smells familiar to a similar one that I investigated with someone else's help several months ago, where a program displaying random shapes and sounds would crash for some users on 15.08 on 64-bit Windows 7. However, my own copy of 64-bit Win7 does not exhibit this problem, so it's difficult to diagnose. We didn't manage to solve it. The working hypothesis is that the crash occurs in Pygame if certain large areas are being filled under some conditions (perhaps determined by the graphics card, hardware acceleration, or something like that). This could affect the present program as it regularly clears the screen by printing the HOME control character.

    Another hypothesis might be that the crash happens in the random number generator, since both programs are driven by random numbers. It seems less likely to me as the random number generator really is a simple piece of code using additions, multiplications, and modulos, but it's something to keep in mind.

    If you have an install of the development version 16.12, does the crash occur there? The difference being that the dev version uses SDL2 rather than through Pygame which is built on SDL1.2.

    Thanks
    Rob

     
  • Anonymous

    Anonymous - 2017-06-08

    Yes, I am using the latest Windows 10 64-bit. I've attached a couple of screen shots and call stack. The odd thing is it crashes slightly differently each time.

    python27.dll!1e0d731e() Unknown
    [Frames below may be incorrect and/or missing, no symbols loaded for python27.dll]
    KernelBase.dll!74285567() Unknown
    msvcr90.dll!6f413c3a() Unknown
    pygame.mixer.pyd!01de1992() Unknown
    pygame.mixer.pyd!01de109b() Unknown
    SDL_mixer.dll!65941485() Unknown
    SDL_mixer.dll!659419cf() Unknown
    SDL.dll!6a742592() Unknown
    SDL.dll!6a748e6c() Unknown
    SDL.dll!6a7543e9() Unknown
    msvcr90.dll!6f3d38b3() Unknown
    msvcr90.dll!6f3d3433() Unknown
    msvcr90.dll!6f3d34c7() Unknown
    kernel32.dll!75118744() Unknown

     
  • Rob Hagemans

    Rob Hagemans - 2017-06-10

    Thanks for the crash info - the slightly different errors each time suggest perhaps a buffer overflow or dereferencing an invalid pointer in one of the C-based packages - most likely pygame or SDL. This kind of thing is not generated by the Python code, unless the bug is in the Python interpreter itself (which is less likely).