Bug#392774: wormux: blocks the whole X session when GNU touches the first object

Jean Parpaillon artefact at altern.org
Wed Nov 8 15:19:59 CET 2006


Hi,
I've forwarded this mail to wormux core team. Thank you for worrying 
about this. I really don't have time do spend on Wormux currently :-(

Jean

Le 08.11.2006 14:23, Eddy Petrișor a écrit :
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Eddy Petrișor wrote:
>   
>> Hello,
>>
>> Steve, thanks for the additional info, I didn't realised the value was
>> ....e+306 until you pointed it out.
>>
>> I will look into the physics engine to see what is wrong and try to
>> understand what is wrong. It appears that upstream is quite aware of the
>> issue that it exists, but they don't know why it happens:
>>
>> ---------8<---------------
>>   //Due to a bug in the physic engine
>>   //sometimes, angle==infinite (according to gdb) ??
>>   GetSpeed(norme, angle);
>>
>>   while(angle < -M_PI) angle += M_PI;
>>   while(angle > M_PI) angle -= M_PI;
>>
>> ---------8<---------------
>>     
>
> I have looked deeper into this issue, and (of course, still a problem
> just in front of me - the lack of coding in the last year starts to show
> its hideous face). I have seen this from the start, but I have payed too
> much attention.
>
> The issue is that angle and norme are declared locally instead of the
> class. The physics engine is quite ok from the GNU POV.
>
> I will be experimenting with some asserts in the code before providing a
> final patch.
>
>
> In care anyone cares, here is the current (debugging) state:
>
>
> - --- wormux-0.7.4.orig/src/object/physics.cpp
> +++ wormux-0.7.4/src/object/physics.cpp
> @@ -192,6 +192,12 @@
>        break;
>
>      default:
> +      assert(m_motion_type==NoMotion);
> +      /*
> +      printf ("\n> motion type:%d\n",m_motion_type);
> +      printf ("> angle      :%d\n",angle);
> +      printf ("> norm       :%d\n\n",norm);
> +      */
>        break ;
>    }
>  }
> - --- wormux-0.7.4.orig/src/weapon/gnu.h
> +++ wormux-0.7.4/src/weapon/gnu.h
> @@ -39,6 +39,7 @@
>    int m_sens;
>    int save_x, save_y;
>    double angle;
> +  double norme;
>  public:
>    Gnu(ExplosiveWeaponConfig& cfg);
>    void Shoot(double strength);
> - --- wormux-0.7.4.orig/src/weapon/gnu.cpp
> +++ wormux-0.7.4/src/weapon/gnu.cpp
> @@ -47,6 +47,8 @@
>    save_y=GetY();
>
>    double angle = ActiveTeam().crosshair.GetAngleRad();
> +  assert(angle < M_PI);
> +  assert(angle > -M_PI);
>
>    if(angle<M_PI/2 && angle>-M_PI/2)
>      m_sens = 1;
> @@ -58,7 +60,6 @@
>  {
>    WeaponProjectile::Refresh();
>
> - -  double norme, angle;
>    //When we hit the ground, jump !
>    if(!IsMoving()&& !FootsInVacuum())
>    {
> @@ -78,10 +79,23 @@
>
>    //Due to a bug in the physic engine
>    //sometimes, angle==infinite (according to gdb) ??
> +  //No, is just the angle and norm should not be redefined locally
> +  //Is so much easier to blame others, ain't it? :-)
>    GetSpeed(norme, angle);
>
> +  /*
>    while(angle < -M_PI) angle += M_PI;
> +  if(angle > M_PI)
> +  {
> +    long int chunk = (floor(angle/M_PI)) * M_PI ;
> +    angle -= chunk ;
> +  }
>    while(angle > M_PI) angle -= M_PI;
> +  */
> +  if (angle < M_PI) printf ("OUCH: angle=%f\n",angle);
> +  assert(angle < M_PI);
> +  if (angle > -M_PI) printf ("OUCH: angle=%f\n",angle);
> +  assert(angle >= -M_PI);
>
>    angle *= 180.0 / M_PI;
>    angle /= 2.0;
> - ---------------8<-----------
>
>
> - --
> Regards,
> EddyP
> =============================================
> "Imagination is more important than knowledge" A.Einstein
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFFUdpTY8Chqv3NRNoRAh6zAJ44q1BhY6LCYZyWTKthX/newJO55gCdGUFr
> e2rCby1HIaqPI/IMP9uPGZg=
> =qroI
> -----END PGP SIGNATURE-----
>
>
> _______________________________________________
> Pkg-games-devel mailing list
> Pkg-games-devel at lists.alioth.debian.org
> http://lists.alioth.debian.org/mailman/listinfo/pkg-games-devel
>   


-- 
 _______________________________________
/ Le moins que l'on puisse demander à  \
| une sculpture, c'est qu'elle ne bouge |
\ pas. -+- Salvador Dali -+-            /
 ---------------------------------------
        \   ^__^
         \  (--)\_______
            (__)\       )\/\
                ||----w |
                ||     ||





More information about the Pkg-games-devel mailing list