Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v5.23.7-308-g1d41bb7 broke t/op/threads-dirh.t on solaris threaded builds #15170

Closed
p5pRT opened this issue Feb 11, 2016 · 8 comments
Closed

Comments

@p5pRT
Copy link

p5pRT commented Feb 11, 2016

Migrated from rt.perl.org#127511 (status was 'resolved')

Searchable as RT127511$

@p5pRT
Copy link
Author

p5pRT commented Feb 11, 2016

From @tonycoz

v5.23.7-308-g1d41bb7 changed the way directory handles are duplicated on thread creation and appears to have broken that on Solaris​:

tony@​nereid​:~/dev/perl/git/perl/t$ LD_LIBRARY_PATH=/home/tony/dev/perl/git/perl ./perl harness -v op/threads-dirh.t
op/threads-dirh.t ..
1..6
ok 1 - crash when duping dirh
not ok 2 - dir iterator is copied from one thread to another
not ok 3 - cloned iterator iterates exactly once over everything not already seen
# Failed test 2 - dir iterator is copied from one thread to another at op/threads-dirh.t line 82
# got ""
# expected "thrit-zor"
# Failed test 3 - cloned iterator iterates exactly once over everything not already seen at op/threads-dirh.t line 84
# got '-.-..-'
# expected /(?^i​:(?<!-rile)-rile-thrit-zor-(?!zor-))/
ok 4 - cloned dir iterator that points to the end of the directory
ok 5 # skip OS does not support long file names (and I mean *long*)
not ok 6 - no warnings during all that
# Failed test 6 - no warnings during all that at op/threads-dirh.t line 127
# got "2"
# expected "0"
# readdir() attempted on invalid dirhandle $toberead at op/threads-dirh.t line 80.
# readdir() attempted on invalid dirhandle $toberead at op/threads-dirh.t line 94.
Failed 3/6 subtests
  (less 1 skipped subtest​: 2 okay)

Test Summary Report


op/threads-dirh.t (Wstat​: 0 Tests​: 6 Failed​: 3)
  Failed tests​: 2-3, 6
Files=1, Tests=6, 1 wallclock secs ( 0.03 usr 0.01 sys + 0.17 cusr 0.04 csys = 0.25 CPU)
Result​: FAIL

From /usr/include/sys/dirent.h​:

/*
* File-system independent directory entry.
*/
typedef struct dirent {
  ino_t d_ino; /* "inode number" of entry */
  off_t d_off; /* offset of disk directory entry */
  unsigned short d_reclen; /* length of this record */
  char d_name[1]; /* name of file */
} dirent_t;

#if defined(_SYSCALL32)

/* kernel's view of user ILP32 dirent */

typedef struct dirent32 {
  ino32_t d_ino; /* "inode number" of entry */
  off32_t d_off; /* offset of disk directory entry */
  uint16_t d_reclen; /* length of this record */
  char d_name[1]; /* name of file */
} dirent32_t;

#endif /* _SYSCALL32 */

#ifdef _LARGEFILE64_SOURCE

/*
* transitional large file interface version AND kernel internal version
*/
typedef struct dirent64 {
  ino64_t d_ino; /* "inode number" of entry */
  off64_t d_off; /* offset of disk directory entry */
  unsigned short d_reclen; /* length of this record */
  char d_name[1]; /* name of file */
} dirent64_t;

#endif /* _LARGEFILE64_SOURCE */

@p5pRT
Copy link
Author

p5pRT commented Feb 14, 2016

From @xsawyerx

Was this just fixed by 99b234b?

@p5pRT
Copy link
Author

p5pRT commented Feb 14, 2016

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Feb 15, 2016

From @jhi

On Sun Feb 14 13​:09​:08 2016, xsawyerx@​cpan.org wrote​:

Was this just fixed by 99b234b?

I think so, it did fix that one for me in Solaris, but I'd like verification from Tony.

@p5pRT
Copy link
Author

p5pRT commented Feb 15, 2016

From @tonycoz

On Sun Feb 14 17​:13​:50 2016, jhi wrote​:

On Sun Feb 14 13​:09​:08 2016, xsawyerx@​cpan.org wrote​:

Was this just fixed by 99b234b?

I think so, it did fix that one for me in Solaris, but I'd like
verification from Tony.

Thanks.

I just took a look at the status of the smoker (which is testing 99b234b), 6 threaded builds which were failing before are passing now.

So closing.

Tony

@p5pRT
Copy link
Author

p5pRT commented Feb 15, 2016

@tonycoz - Status changed from 'open' to 'pending release'

@p5pRT
Copy link
Author

p5pRT commented May 13, 2016

From @khwilliamson

Thank you for submitting this report. You have helped make Perl better.
 
With the release of Perl 5.24.0 on May 9, 2016, this and 149 other issues have been resolved.

Perl 5.24.0 may be downloaded via https://metacpan.org/release/RJBS/perl-5.24.0

@p5pRT
Copy link
Author

p5pRT commented May 13, 2016

@khwilliamson - Status changed from 'pending release' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant