Ticket #412 (closed bug: fixed)

Opened 6 years ago

Last modified 5 years ago

Failure of set_integer_keyed_str on linux AMD64

Reported by: mikehh Owned by:
Priority: normal Milestone:
Component: none Version: trunk
Severity: medium Keywords:
Cc: Language:
Patch status: Platform: linux

Description

I get a failure of set_integer_keyed_str BUT not when I configure with --configure_trace

I am running on linux AMD64 Kubuntu Intrepid

On Tuesday 3rd March I applied a patch by andy dougherty/rurban to r37128. For the first time I was able to build with --optimize on my AMD64 platform. However I failed two tests (out of 11701) they were t/pmc/packfile.t (test 6) and t/pmc/packfilesegment.t (only test).

Both tests reported:
# Failed test 'set_integer_keyed_str'
# at t/pmc/packfile.t line 142.
# Exited with error code: 134
# Received:
# Aborted
#
# Expected:
# not equal

I then did a build without the optimize and without the patch, with a clean checkout. perl Configure.pl, make. make smoke.

 http://smolder.plusthree.com/app/public_projects/report_details/18602

The tests were still failing.

The patch was applied at r37129 and I did an svn up on the original directory to r37132. I did a make realclean, perl Configure.pl --optimize --test, make world, make smoke. The two tests were still failing.

 http://smolder.plusthree.com/app/public_projects/report_details/18605

None of the other smolder tests were failing these tests on AMD64. and I could not see why this was happening. I reported it on #parrot, but no one there had any other ideas.

I moved back to testing on i386 for a while.

This morning while chatting to rurban and kid51 on #parrot I decided to give it another try.

At r37172 I did an --optimize build and got the same failures.

 http://smolder.plusthree.com/app/public_projects/report_details/18688

At r37173 I built using perl Configure.pl --optimize --test --configure_trace and the tests passed.

 http://smolder.plusthree.com/app/public_projects/tap_archive/18692

I tried various combinations of --optimize and --configure_trace.

With --configure_trace the tests pass with or without --optimize.

Without --configure_trace the tests fail with or without the --optimize.

At revision 37184 - perl Configure --optimize --test --configure_trace:

 http://smolder.plusthree.com/app/public_projects/report_details/18710

At r37184 without --configure_trace:

 http://smolder.plusthree.com/app/public_projects/report_details/18712

BTW: In all the above tests I get a TODO passed:

t/pmc/exception.t (Wstat: 0 Tests: 31 Failed: 0)

TODO passed: 30

I do not have any problems with these tests on linux i386 also Kubuntu Intrepid.

I am up to date with updates available and similarly with CPAN as of this morning (Sat, 7th March 2009)

Change History

  Changed 5 years ago by mikehh

I think this issue no longer applies. At least on Ubuntu Intrepid Amd64.

The test specified above all PASS now in all the various combinations.

I will do a final test on my Kubuntu Intrepid Amd64 and report back,

follow-up: ↓ 3   Changed 5 years ago by mikehh

Nope - it still failed those tests on my Kubuntu Intrepid Amd64!!!!! at r38087

I did a make realclean, svn up, perl Configure.pl --optimize --test, make, make smoke:
 http://smolder.plusthree.com/app/public_projects/report_details/19817

Test Summary Report
-------------------
t/pmc/packfile.t                          (Wstat: 256 Tests: 6 Failed: 1)
  Failed test:  6
  Non-zero exit status: 1
t/pmc/packfilesegment.t                   (Wstat: 256 Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
Files=395, Tests=11693, 704 wallclock secs (12.50 usr  4.20 sys + 329.01 cusr 149.83 csys = 495.54 CPU)
Result: FAIL

I then copied my svn/parrot (up to date - just a clean copy) to parrot.t

perl Configure.pl --optimize --test --configure_trace
make world 2>&1 | tee make_world.38087.log
make html
make smoke
 http://smolder.plusthree.com/app/public_projects/report_details/19818

All tests successful.
Files=395, Tests=11733, 688 wallclock secs (12.18 usr  5.14 sys + 327.90 cusr 150.09 csys = 495.31 CPU)
Result: PASS

On the same computer different root partition / same home partition - home dir mhu64 vs mhk64), I ran on Ubuntu Intrepid with --optimize --test and passed those tests at r38086
 http://smolder.plusthree.com/app/public_projects/report_details/19811

Same gcc compiler and same perl - I need to check if there are any differences with the CPAN modules loaded, but the relevant ones should be the same. The only difference, I can think of, other than one is running kdm as opposed to gnome, is that I was using mySQL on the Kubuntu and PostgreSQL on Ubuntu for some other tests I was doing.

I am going to check if I can find any config differences between the two.

I will report back on this if/when I find anything.

Cheers, Michael (mikehh)

in reply to: ↑ 2   Changed 5 years ago by jkeenan

As the creator of the --configure_trace option, I am surprised that you are getting different results in make test depending on whether you call that option or not. The option takes a snapshot of the Parrot::Configure object's data structure upon the completion of each configuration step and records that snapshot in a hash found in a Storable-format file in the user's top-level directory: .configure_trace.sto. That hash can then be queried via Parrot::Configure::Trace methods to determine what's happening at each step.

To gain some data for this ticket's problem, I configured once without -configure_trace and once with. I then diffed each configurations lib/Parrot/Config/Generated.pm and MANIFEST.configure.generated. Here are the results:

diff -w Generated.sans.configure_trace.pm lib/Parrot/Config/Generated.pm 
146c146
<              'configdate' => 'Mon Apr 13 02:00:46 2009 GMT',
---
>              'configdate' => 'Mon Apr 13 02:11:13 2009 GMT',
148c148
<              'configure_args' => '',
---
>              'configure_args' => '"--configure_trace"',

So configuring with --configure_trace' adds a value to one key-value pair in %Config`.

[li11-226:parrot] 522 $ diff MANIFEST.configure.generated.sans.configure_trace MANIFEST.configure.generated
[li11-226:parrot] 523 $ 

So configuring with --configure_trace creates no more files than configuring without it.

Does that offer any clues?

kid51

  Changed 5 years ago by mikehh

I did various diffs on config files on the two builds - in effect the only differences I could find were the dirs and date/time info. I even went as far as a recursive diff on the two parrot directories - it generated just under 10000 lines - so I don't guarantee I caught everything - but couldn't see anything that would help.

Talking about tracing here is the output of running the failing .pir files with and without -t. Without -t I get Aborted, and guess what running with -t - IT WORKS as it is supposed to. This is the build without the --configure_trace, which fails the tests.

mhk64@mhk64-desktop:~/parrot$ ./parrot t/pmc/packfile_6.pir
Aborted                                                    
mhk64@mhk64-desktop:~/parrot$ ./parrot -t t/pmc/packfile_6.pir
     0 set_args PC9                                           
     2 set P0, PC19                                        P0=PMCNULL PC19=Sub=PMC(0x13f7360 pc:40)
     5 get_results PC6 (1), P1                                        PC6=FixedIntegerArray=PMC(0x13ecd10) P1=PMCNULL
     8 invokecc P0                                        P0=Sub=PMC(0x13f7360 pc:40)                                
    40 new P0, PC18                                        P0=PMCNULL PC18=Key=PMC(0x13eccb0)                        
    43 interpinfo S0, 21                                        S0="(null)"                                          
    46 concat S0, "/runtime/parrot/libr"        S0="/home/mhk64/parrot"                                              
    49 stat I0, S0, 1                                        I0=0 S0="/home/mhk64/parrot/r"                          
    53 open P1, S0, "r"                                        P1=PMCNULL S0="/home/mhk64/parrot/r"                  
    57 read S0, P1, I0                                        S0="/home/mhk64/parrot/r" P1=FileHandle=PMC(0x13f6ca0) I0=18656
    61 close P1                                        P1=FileHandle=PMC(0x13f6ca0)                                          
    63 set P0, S0                                        P0=Packfile=PMC(0x13f6cd0) S0="\x{fe}PBC\r\n\x{1a}\n\b\x{0}\x{0}\x{1}\x{0}\x{0}\x{4}\x{5}\x{0}\x{0}\x{0}\x{0}"
    66 set_returns PC6 (1), P0                                        PC6=FixedIntegerArray=PMC(0x13ecd10) P0=Packfile=PMC(0x13f6cd0)                                  
    69 returncc                                                                                                                                                        
    10 set_args PC6 (1), P1                                        PC6=FixedIntegerArray=PMC(0x13ecd10) P1=Packfile=PMC(0x13f6cd0)                                     
    13 get_results PC6 (1), P2                                        PC6=FixedIntegerArray=PMC(0x13ecd10) P2=PMCNULL                                                  
    16 callmethodcc P1, "get_directory"                                        P1=Packfile=PMC(0x13f6cd0)                                                              
    19 set_args PC6 (1), P2                                        PC6=FixedIntegerArray=PMC(0x13ecd10) P2=PackfileDirectory=PMC(0x13f55c0)                            
    22 get_results PC4 (1), S0                                        PC4=FixedIntegerArray=PMC(0x13ecd40) S0="(null)"                                                 
    25 callmethodcc P2, "pack"                                        P2=PackfileDirectory=PMC(0x13f55c0)                                                              
    28 length I0, S0                                        I0=0 S0="\x{14}\t\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}"
    31 eq I0, 0, 6                                        I0=18592                                                                                                      
    35 print "not "                                                                                                                                                     
not     37 say "equal"                                                                                                                                                  
equal                                                                                                                                                                   
    39 end                                                                                                                                                              
FileHandle objects (like stdout and stderr)are about to be closed, so clearing trace flags.                                                                             
mhk64@mhk64-desktop:~/parrot$ ./parrot t/pmc/packfilesegment_1.pir
Aborted
mhk64@mhk64-desktop:~/parrot$ ./parrot -t t/pmc/packfilesegment_1.pir
     0 set_args PC9
     2 set P0, PC19                                        P0=PMCNULL PC19=Sub=PMC(0x1974000 pc:40)
     5 get_results PC6 (1), P1                                        PC6=FixedIntegerArray=PMC(0x1969db0) P1=PMCNULL
     8 invokecc P0                                        P0=Sub=PMC(0x1974000 pc:40)
    40 new P0, PC18                                        P0=PMCNULL PC18=Key=PMC(0x1969d50)
    43 interpinfo S0, 21                                        S0="(null)"
    46 concat S0, "/runtime/parrot/libr"        S0="/home/mhu64/parrot"
    49 stat I0, S0, 1                                        I0=0 S0="/home/mhu64/parrot/r"
    53 open P1, S0, "r"                                        P1=PMCNULL S0="/home/mhu64/parrot/r"
    57 read S0, P1, I0                                        S0="/home/mhu64/parrot/r" P1=FileHandle=PMC(0x1973940) I0=18656
    61 close P1                                        P1=FileHandle=PMC(0x1973940)
    63 set P0, S0                                        P0=Packfile=PMC(0x1973970) S0="\x{fe}PBC\r\n\x{1a}\n\b\x{0}\x{0}\x{1}\x{0}\x{0}\x{4}\x{5}\x{0}\x{0}\x{0}\x{0}"
    66 set_returns PC6 (1), P0                                        PC6=FixedIntegerArray=PMC(0x1969db0) P0=Packfile=PMC(0x1973970)
    69 returncc
    10 set_args PC6 (1), P1                                        PC6=FixedIntegerArray=PMC(0x1969db0) P1=Packfile=PMC(0x1973970)
    13 get_results PC6 (1), P2                                        PC6=FixedIntegerArray=PMC(0x1969db0) P2=PMCNULL
    16 callmethodcc P1, "get_directory"                                        P1=Packfile=PMC(0x1973970)
    19 set_args PC6 (1), P2                                        PC6=FixedIntegerArray=PMC(0x1969db0) P2=PackfileDirectory=PMC(0x1972260)
    22 get_results PC4 (1), S0                                        PC4=FixedIntegerArray=PMC(0x1969de0) S0="(null)"
    25 callmethodcc P2, "pack"                                        P2=PackfileDirectory=PMC(0x1972260)
    28 length I0, S0                                        I0=0 S0="\x{14}\t\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}\x{0}"
    31 eq I0, 0, 6                                        I0=18592
    35 print "not "
not     37 say "equal"
equal
    39 end
FileHandle objects (like stdout and stderr)are about to be closed, so clearing trace flags.

The second test above passes if I use -v (alone) but not the first.

On an insane note, I copied the parrot executable from my /home/mhu64/parrot dir (The build that works on Ubuntu Intrepid Amd64) built at r38986 to my /home/mhk64/parrot dir (it was the same size although diff said there were binary differences) and it gave exactly the same results as above.

At this stage I am no nearer finding the cause of the problem - although I have eliminated some possibilities. Any other ideas would be appreciated.

Cheers, Michael (mikehh)

  Changed 5 years ago by mikehh

s/r38986/r38086/ in the previous comment. The Kubuntu Intrepid Amd64 build was at r38087.

  Changed 5 years ago by mikehh

I reinstalled my Kubuntu AMD64 with Kubuntu Jaunty (9.04) AMD64 and the test now passes.

with -> perl Configure.pl --optimize --test which failed the test on Kubuntu Intrepid AMD64

 http://smolder.plusthree.com/app/public_projects/report_details/20559

I am unable to reproduce this failure and think that there were some configuration problems.

Unless someone else can reproduce this problem, I think the ticket can be closed.

Cheers, Michael (mikehh)

  Changed 5 years ago by mikehh

  • status changed from new to closed
  • resolution set to fixed

I have seen no reports related to this ticket and as far as I can see it has been long resolved.

Closing ticket as resolved.

Note: See TracTickets for help on using tickets.