 core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php         | 2 ++
 core/modules/system/system.module                                | 4 ++--
 .../Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php    | 9 +++++++++
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php b/core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php
index 34ffc0d..73e3367 100644
--- a/core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php
+++ b/core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php
@@ -70,6 +70,8 @@ protected function doGetDependencies(array $libraries_with_unresolved_dependenci
    * {@inheritdoc}
    */
   public function getMinimalRepresentativeSubset(array $libraries) {
+    assert('count($libraries) === count(array_unique($libraries))', '$libraries must be a set.');
+
     $minimal = [];
 
     // Determine each library's dependencies.
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index d3b55f9..80b4dc3 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -630,10 +630,10 @@ function system_js_settings_build(&$settings, AttachedAssetsInterface $assets) {
 
     // Provide the page with information about the individual asset libraries
     // used, information not otherwise available when aggregation is enabled.
-    $minimal_libraries = $library_dependency_resolver->getMinimalRepresentativeSubset(array_merge(
+    $minimal_libraries = $library_dependency_resolver->getMinimalRepresentativeSubset(array_unique(array_merge(
       $assets->getLibraries(),
       $assets->getAlreadyLoadedLibraries()
-    ));
+    )));
     sort($minimal_libraries);
     $settings['ajaxPageState']['libraries'] = implode(',', $minimal_libraries);
   }
diff --git a/core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php b/core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php
index e8af816..92c4e49 100644
--- a/core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php
+++ b/core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php
@@ -174,4 +174,13 @@ public function testGetMinimalRepresentativeSubset(array $libraries, array $expe
     $this->assertEquals($expected, $this->libraryDependencyResolver->getMinimalRepresentativeSubset($libraries));
   }
 
+  /**
+   * @covers ::getMinimalRepresentativeSubset
+   *
+   * @expectedException \AssertionError
+   */
+  public function testGetMinimalRepresentativeSubsetInvalidInput() {
+    $this->libraryDependencyResolver->getMinimalRepresentativeSubset(['test/no_deps_a', 'test/no_deps_a']);
+  }
+
 }
