Bug 4847 - testSteppingtestHitAndRun(frysk.proc.TestBreakpoints)java.lang.NullPointerException
Summary: testSteppingtestHitAndRun(frysk.proc.TestBreakpoints)java.lang.NullPointerExc...
Status: RESOLVED DUPLICATE of bug 6044
Alias: None
Product: frysk
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Unassigned
URL:
Keywords:
Depends on: 4747
Blocks:
  Show dependency treegraph
 
Reported: 2007-07-26 15:28 UTC by Mark Wielaard
Modified: 2008-04-17 16:35 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Wielaard 2007-07-26 15:28:21 UTC
Since kernel 2.6.22.1-27.fc7 (x86 SMP) this test fails because the abort(),
which should never be reached is triggered in funit-breakpoints:

  // Generating a trap event ourselves, simulating "bad code".  Setup
  // a sigsetjump so we can handle it and return from this function
  // safely when the signal handler uses longjmp. On some
  // architectures the PC isn't incremented on invallid/trapping
  // instructions. So this makes sure we skip it when we return.
  if (sigsetjmp (env, 1) == 0)
    {
      send_trap++;
#if defined(__i386__) || defined(__x86_64__)
      asm("int3");
#elif defined(__powerpc64__) || defined(__powerpc__)
      asm(".long 0x7d821008");
#else
      #error unsuported architecture
#endif
      abort(); // Should never be reached.

This is most likely related to and depends on a real fix for handling signals
during stepping outlined in bug #4747 (int3 is a somewhat difficult case though,
that probably should be handled independently by special casing since it
generates a SIGTRAP which isn't a rt signal, so it doesn't queue multiple and
you will only get one).

1)
testSteppingtestHitAndRun(frysk.proc.TestBreakpoints)java.lang.NullPointerException
   at java.lang.Integer.parseInt(libgcj.so.8rh)
   at java.lang.Integer.decode(libgcj.so.8rh)
   at frysk.proc.TestBreakpoints$GoAround.run(TestRunner)
2)
testSteppingtestInsertRemove(frysk.proc.TestBreakpoints)java.lang.NullPointerException
   at java.lang.Integer.parseInt(libgcj.so.8rh)
   at java.lang.Integer.decode(libgcj.so.8rh)
   at frysk.proc.TestBreakpoints$GoAround.run(TestRunner)
3) testSteppingAddLots(frysk.proc.TestBreakpoints)java.lang.NullPointerException
   at java.lang.Integer.parseInt(libgcj.so.8rh)
   at java.lang.Integer.decode(libgcj.so.8rh)
   at frysk.proc.TestBreakpoints$GoAround.run(TestRunner)
Comment 1 Mark Wielaard 2007-08-10 11:21:20 UTC
Marked the following test as unresolved() for now:

frysk.proc.TestBreakpoints.testSteppingtestHitAndRun
frysk.proc.TestBreakpoints.testSteppingtestInsertRemove
frysk.proc.TestBreakpoints.testSteppingAddLots
Comment 2 Mark Wielaard 2008-04-17 16:35:15 UTC
Signal handling and stepping works correctly now. But on x86 kernels you will
hit bug #6044.

commit f3f9eddf68ae48f414d20539f4ed80d897a36c14
Author: Mark Wielaard <mwielaard@redhat.com>
Date:   Thu Apr 17 18:27:24 2008 +0200

    All TestBreakpoint tests should now PASS (except on broken x86 kernels).
    
    frysk-core/frysk/proc/ChangeLog
    2008-04-17  Mark Wielaard  <mwielaard@redhat.com>
    
            * TestBreakpoints.java (testSteppingtestHitAndRun): No longer
            unresolved because of bug #4847, but make unresolvedOnIA32
            because of bug #6044.
            (testSteppingtestInsertRemove): Likewise.
            (testSteppingAddLots): Likewise.


*** This bug has been marked as a duplicate of 6044 ***