I have experienced this issue in various versions of jenkins and parameterized trigger plugin. I have been upgrading both in the far chance that it might have been fixed from work on other bugs for the plugin. I am now using the latest versions: 1.486 for jenkins and 3.16 for parameterized trigger plugin and I'm still seeing the problem.
Indeed Job A triggers job B through the post build parameterized trigger plugin using Pass-through Git commit that was built. This is one example of the problem that I saw as recent as in the last hour:
Job B was triggered by both #414 and #415 of job A:
Started by upstream project A build number 414
originally caused by:
Started by remote host 127.0.0.1
Started by upstream project A build number 415
originally caused by:
Started by remote host 127.0.0.1
Revision: 495765555ce4db911825ea0b40bca6278669ae72
Note that the git commit hash of 4957 was actually from #414 of job A:
Build #414 (Oct 22, 2012 12:28:07 PM)
...
Started by remote host 127.0.0.1
Revision: 495765555ce4db911825ea0b40bca6278669ae72
The git commit hash of 4c41 from #415 was not what the triggered job B is building ... in fact, this commit never will get built if no more pushes come in:
Build #415 (Oct 22, 2012 1:04:17 PM)
...
Revision: 4c41dd60bdff7557133ebfe5229d7f9d06722cef
As a result, the developers (justifiably) complain that the latest build artifacts often do not reflect the latest push. Since the continuous integration system is broken, I have to continually monitor the jobs and manually kick them when necessary.
Which version of jenkins/ parameterized trigger are you using?
How is Job A configured?
Is the parameterized trigger done as a post build trigger?
Are the git hashes parameters passed using "Pass-Through Git commit that was built" Parameters?
If the answers to above are both yes, then the issue seems to be that the action RevisionParameterAction[1] that the git-plugin is providing via the GitRevisionBuildParameters[2] class does not support the QueueAction[3] interface that would allow the Queue class to add separate builds for the different revisions.
Alternatively the issue is that the RevisionParameterAction[1] does not implement the FoldableAction[4] interface, that would allow the multiple revisions to be merged together so only the latest revision is passed to the next build, as shown in the Queue Class[5].
In most use cases the behaviour would want to be trigger the downstream job for every commit Job A built.
In a smaller number of cases there might be the need for the downstream job to run only for the latest commit in Job A, (not sure how that would work if Job A worked on multiple branches).
[1] https://github.com/jenkinsci/git-plugin/blob/master/src/main/java/hudson/plugins/git/RevisionParameterAction.java
[2] https://github.com/jenkinsci/git-plugin/blob/master/src/main/java/hudson/plugins/git/GitRevisionBuildParameters.java
[3] https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Queue.java#L1467
[4] https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/queue/FoldableAction.java
[5] https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Queue.java#L526