Libsass: [HEAD] - endless loop, working with 3.6.1

Created on 23 Sep 2019  路  16Comments  路  Source: sass/libsass

With current libsass HEAD (b894c529b8caf6c31f9206953e180e79b80cf97a) the compiler won't finish, no Error, just endless waiting for SCSS Snippet further down ....
SCSS is from a Templatemonster Template ... got some Templates with compiling Problems with latest HEAD while there were no problems with 3.6.1.
I isolated the Problem to this Part:

SCSS:

.one-screen-page {
    @extend %context-dark;
}

%context-dark {
    .button-secondary-outline {
        &:hover,
        &:focus,
        &:active,
        &:hover {
            color: #fca;
        }
    }
}

Actual results

[libsass HEAD - b894c529b8caf6c31f9206953e180e79b80cf97a]
endless loop without Error

version info:

$ sassc -v
sassc: 3.6.1-5-g507f0-dirty
libsass: 3.6.1-45-gb894c5
sass2scss: 1.1.1
sass: 3.5

Expected result

libsass 3.6.1 (4d229af5500be1023883c38c4a675f0ed919839d)

CSS:

.one-screen-page .button-secondary-outline:hover, .one-screen-page .button-secondary-outline:focus, .one-screen-page .button-secondary-outline:active, .one-screen-page .button-secondary-outline:hover {
  color: #fff;
}

version info:

$ sassc -v
sassc: 3.6.1-5-g507f0-dirty
libsass: 3.6.1-dirty
sass2scss: 1.1.1
sass: 3.5

Verified with https://www.sassmeister.com/ that it's also compiling with 3.5.4

STRACE of endless processing:

strace -s 99999 sassc test.scss test.css
execve("/usr/local/bin/sassc", ["sassc", "test.scss", "test.css"], [/* 26 vars */]) = 0
brk(NULL)                               = 0xa50000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f441c9b4000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=138230, ...}) = 0
mmap(NULL, 138230, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f441c992000
close(3)                                = 0
open("/lib/libsass.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220a\r\0\0\0\0\0@\0\0\0\0\0\0\0xP\317\1\0\0\0\0\0\0\0\0@\0008\0\7\0@\0&\0%\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\26@+\0\0\0\0\0\26@+\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0N+\0\0\0\0\0\0NK\0\0\0\0\0\0NK\0\0\0\0\0\320#\1\0\0\0\0\0\220\245\1\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\20\v,\0\0\0\0\0\20\vL\0\0\0\0\0\20\vL\0\0\0\0\0\20\2\0\0\0\0\0\0\20\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\270\203&\0\0\0\0\0\270\203&\0\0\0\0\0\270\203&\0\0\0\0\0\34\220\0\0\0\0\0\0\34\220\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0R\345td\4\0\0\0\0N+\0\0\0\0\0\0NK\0\0\0\0\0\0NK\0\0\0\0\0\0\342\0\0\0\0\0\0\0\342\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\366}\203I\277\305\"#0s\16\262\351a\225C\211\257sz\0\0\0\0\3\20\0\0\265\0\0\0\0\4\0\0\20\0\0\0\10 \0\0\1$ \30@\0\31\6\0\0020G\0\0\2\0\f\0\0\10\2\0\0 \0\21\0\0\20\0\4 (\0\205\20\246\220\0\0S\274\0\0\200\0\204$DH\202\1\0\1 \200\f\200@\202\0220\222E!\20\30\1\302\10\240\0\0\216\7D\2\4\262\243\4\0\"\"\0@\4\0K\22\0\201\"\0\2\200\4A\10\0\0`\202\2\22\2!\20\244@\300\1\300\2\1\3\23\4\6\4\250\0$\340H\f\10\20\0214\0\t\20\f\210\10\204\2\303b\22\0\0\0\210\0\"\00013(h\10\22\20\0\20\1\2 \30C\20\25H\0 \20\200\0\0\321\21H\200\242\nH\0\0\0208@\0\340\202\0\24\0\0\0\300\4\0\4\0\200H\0100 P\0\4\200\4\4\0\20\1\0 \2\314\1A\10@\200\0\2\0\20\201\204\20a\340(\0\1\200\2\6\0\1\214\200\2\0P\10\20\0\221\0 \314& \10`\0\2\0\20\0@\2\0\204.\34\"\23\0@\n\fG$\211\16NQH\10\10\0AP\2C\0\n\0\240\0% H\t8\20\4\2c\"\31Q\211\30B\10\20\200\224\1\20\1\24\224\345\vP\204", 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=30366200, ...}) = 0
mmap(NULL, 5043088, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f441c2c4000
mprotect(0x7f441c579000, 2093056, PROT_NONE) = 0
mmap(0x7f441c778000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2b4000) = 0x7f441c778000
mmap(0x7f441c78c000, 29584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f441c78c000
close(3)                                = 0
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\r\0\0\0\0\0\0@\0\0\0\0\0\0\0\30C\0\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0!\0 \0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\37\0\0\0\0\0\0\4\37\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0X-\0\0\0\0\0\0X- \0\0\0\0\0X- \0\0\0\0\0\20\3\0\0\0\0\0\0\270\3\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\210-\0\0\0\0\0\0\210- \0\0\0\0\0\210- \0\0\0\0\0\20\2\0\0\0\0\0\0\20\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0@\31\0\0\0\0\0\0@\31\0\0\0\0\0\0@\31\0\0\0\0\0\0\274\0\0\0\0\0\0\0\274\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0R\345td\4\0\0\0X-\0\0\0\0\0\0X- \0\0\0\0\0X- \0\0\0\0\0\250\2\0\0\0\0\0\0\250\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0005v\223\310\361\364\235\223\1\fN1R\234\7\315\322\275=\10\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0 \0\0\0\0\0\0\0\33\0\0\0\32\0\0\0\2\0\0\0\7\0\0\0\230\2\21\0\200H\0\4\22\0\0@\203(\10\236\32\0\0\0\0\0\0\0\33\0\0\0\0\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\35\0\0\0\0\0\0\0\36\0\0\0\0\0\0\0\37\0\0\0\0\0\0\0 \0\0\0\"\0\0\0#\0\0\0%\0\0\0&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\0\0\0\0\0\0\0\0\0\0\0\353\26\251\30a\257\0\371\301S\200\30\273\25sB\257\304M\17\221!\374\370\6\2\4\371\3733\373\17\371\31sB\372\31sB\225\263_\31\177\236\320\30a\242\222\6\5\350\7\371\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\1\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\375\0\0\0\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\337\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0 \0\0\0", 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=19288, ...}) = 0
mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f441c0c0000
mprotect(0x7f441c0c2000, 2097152, PROT_NONE) = 0
mmap(0x7f441c2c2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f441c2c2000
close(3)                                = 0
open("/lib64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \262\5\0\0\0\0\0@\0\0\0\0\0\0\0@\31\17\0\0\0\0\0\0\0\0\0@\0008\0\10\0@\0!\0 \0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\213\16\0\0\0\0\0+\213\16\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\20\215\16\0\0\0\0\0\20\215.\0\0\0\0\0\20\215.\0\0\0\0\0\350\211\0\0\0\0\0\0P\326\1\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\330\364\16\0\0\0\0\0\330\364.\0\0\0\0\0\330\364.\0\0\0\0\0 \2\0\0\0\0\0\0 \2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\0\0\0\0\2\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0\7\0\0\0\4\0\0\0\20\215\16\0\0\0\0\0\20\215.\0\0\0\0\0\20\215.\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\10\0\0\0\0\0\0\0P\345td\4\0\0\0\324\210\f\0\0\0\0\0\324\210\f\0\0\0\0\0\324\210\f\0\0\0\0\0\224J\0\0\0\0\0\0\224J\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0R\345td\4\0\0\0\20\215\16\0\0\0\0\0\20\215.\0\0\0\0\0\20\215.\0\0\0\0\0\360r\0\0\0\0\0\0\360r\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\263\331\22\213\317g\206)*3\232GyS\26}\r\332\265\272\0\0\0\0\367\3\0\0\203\0\0\0\0\2\0\0\17\0\0\0\4\200G\0\202@@\230\0\0\0D\2\0\210\20\0\0\0\0\0\242\0\1(\4 \22 \6\220\10\2\f\10\5\2\0Z\0\0\20\n\1\0\10\22\2\\\0\300D\30 \4@\202\5+\200a \20\20\0\0!\201\0`E\0\6\5\271@\220\v\1\t$\30G\2\2\t\20\205\200\200)\10\234`\206i\4\204\304\200y\0d \"\210\3`$\220\200\0002\22( \2B\20B \200\302\2\20\202A\200\241@a\10 \24\0@\2\0\1\0\0\1\4\0\20 @\0\0 \2\0\0\0\0\20@\0\t\0\340\2\4\210\20\0\1@\206\4\2#8\365&@\201\3 \4\0\20\4\f$ \0@\10\0\f\20\0\0\0\4\20\0\6\6\5 B\210@\\\6 \0\20H\4 \0\0@\10\4\1\0\22\364\373\307\237\7\0\203\206\200\20\200\0$\2440 PH! \220\21\200$\340\247 !`\210\210\0\3\0\200\10\3\0\4\0\344\10\220", 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=991616, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f441c991000
mmap(NULL, 3171168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f441bdb9000
mprotect(0x7f441bea2000, 2093056, PROT_NONE) = 0
mmap(0x7f441c0a1000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x7f441c0a1000
mmap(0x7f441c0ab000, 82784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f441c0ab000
close(3)                                = 0
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20S\0\0\0\0\0\0@\0\0\0\0\0\0\0\200P\21\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0$\0#\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\334\7\20\0\0\0\0\0\334\7\20\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0p\r\20\0\0\0\0\0p\r0\0\0\0\0\0p\r0\0\0\0\0\0d\3\0\0\0\0\0\0\270\3\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\220\r\20\0\0\0\0\0\220\r0\0\0\0\0\0\220\r0\0\0\0\0\0 \2\0\0\0\0\0\0 \2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0H\206\17\0\0\0\0\0H\206\17\0\0\0\0\0H\206\17\0\0\0\0\0,\22\0\0\0\0\0\0,\22\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0R\345td\4\0\0\0p\r\20\0\0\0\0\0p\r0\0\0\0\0\0p\r0\0\0\0\0\0\220\2\0\0\0\0\0\0\220\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0[\24\276Mt\2261g5#\246\20t\301\tY\325\17TU\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0 \0\0\0\0\0\0\0\10\3\0\0\22\0\0\0@\0\0\0\f\0\0\0%\0`\0\0\240.\"\200\0\26\211\0 E\"\2\0\300``i\10\212\0\t\0\0\0\0\0\0\0\0\0\0\0\0\212P\20\1\10\0\0\4\1\302\24\1 \210\"\0\304\243X\240\n\6\216\0\212\0\0\4\0@\0\0 \20\0\5\0\5\r\7\7\22A\0\1\0\10\0\0@\0\t\0\20\4D\30\4\200a(\22@\4\1\nE\221 @\200\f\22\1\0\0\0\0\0\0\0\0\4\2\0\0\0@\0\200\2\20\322\0\1\10\4\301 E\1\0\310\"\0\4\2\0\202\0\4\0\0\0\4\0Y\4\2\0\n\200\1\0\0\4\0\20 \3\0\0\210 \10\20\0\0 \2\0\0\200\10\2\4\0\0HQ\0\0\f\2\0\0 \10 \0\0\0\0 #\4\0\200\0I\2\fc\2 A\221\242@\4\202EL  \0\0\300\2\4\200\10\2\r(\2\0\20\"\0!\22\30\30\24 8\0\210\0\0\260  B,\10\302\0 \200\361)\24A\21 @\220 \4\1P\20\202\0\0\214\0\0`\242\10\10A\0\0\0 \202", 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1137024, ...}) = 0
mmap(NULL, 3150120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f441bab7000
mprotect(0x7f441bbb8000, 2093056, PROT_NONE) = 0
mmap(0x7f441bdb7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x100000) = 0x7f441bdb7000
close(3)                                = 0
open("/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220*\0\0\0\0\0\0@\0\0\0\0\0\0\0\10S\1\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0\37\0\36\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0TL\1\0\0\0\0\0TL\1\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\260M\1\0\0\0\0\0\260M!\0\0\0\0\0\260M!\0\0\0\0\0\300\3\0\0\0\0\0\0P\6\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\330M\1\0\0\0\0\0\330M!\0\0\0\0\0\330M!\0\0\0\0\0\360\1\0\0\0\0\0\0\360\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\304,\1\0\0\0\0\0\304,\1\0\0\0\0\0\304,\1\0\0\0\0\0D\5\0\0\0\0\0\0D\5\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0R\345td\4\0\0\0\260M\1\0\0\0\0\0\260M!\0\0\0\0\0\260M!\0\0\0\0\0P\2\0\0\0\0\0\0P\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\27\237 )\230\344)\252\22\25\220\177mL\\\33\271\311\0016\0\0\0\0\203\0\0\0\26\0\0\0\20\0\0\0\n\0\0\0\23\34\3\30\4$\0\1\1\201\0T\4\6\210\20\200\204\0\10\0\10\5\200\2\0@\20D\20\0\266\2\200\320 \301\0\220\2024\1\0\4\10(@\2H\1\v \320\1\2(\0235\4`l\322\0!\3p`@\322\200\10`\0@\1\0\200\1\0\0\2$\0\10\21\2\10H\300\1$\t\21(  \10C\v\246\202H\t\10\10\3D\f\n\34\22O\306\1\207\va\204\226\315\4\302\305\f\242\333\16\314\26\0\0\0\27\0\0\0\32\0\0\0\0\0\0\0\35\0\0\0\0\0\0\0\37\0\0\0 \0\0\0\"\0\0\0%\0\0\0'\0\0\0\0\0\0\0(\0\0\0*\0\0\0+\0\0\0.\0\0\0000\0\0\0003\0\0\0004\0\0\0007\0\0\0\0\0\0\0008\0\0\0009\0\0\0<\0\0\0=\0\0\0?\0\0\0@\0\0\0A\0\0\0B\0\0\0C\0\0\0E\0\0\0\0\0\0\0F\0\0\0\0\0\0\0G\0\0\0\0\0\0\0\0\0\0\0H\0\0\0I\0\0\0K\0\0\0L\0\0\0M\0\0\0\0\0\0\0\0\0\0\0O\0\0\0Q\0\0\0\0\0\0\0\0\0\0\0", 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=88776, ...}) = 0
mmap(NULL, 2184192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f441b8a1000
mprotect(0x7f441b8b6000, 2093056, PROT_NONE) = 0
mmap(0x7f441bab5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f441bab5000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240%\2\0\0\0\0\0@\0\0\0\0\0\0\0\370\301 \0\0\0\0\0\0\0\0\0@\0008\0\n\0@\0L\0K\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0000\2\0\0\0\0\0\0000\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\20\334\30\0\0\0\0\0\20\334\30\0\0\0\0\0\20\334\30\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\37\34\0\0\0\0\0\20\37\34\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0'\34\0\0\0\0\0\0'<\0\0\0\0\0\0'<\0\0\0\0\0\240Q\0\0\0\0\0\0\340\232\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0`[\34\0\0\0\0\0`[<\0\0\0\0\0`[<\0\0\0\0\0\360\1\0\0\0\0\0\0\360\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0p\2\0\0\0\0\0\0p\2\0\0\0\0\0\0p\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0\7\0\0\0\4\0\0\0\0'\34\0\0\0\0\0\0'<\0\0\0\0\0\0'<\0\0\0\0\0\20\0\0\0\0\0\0\0\240\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0P\345td\4\0\0\0,\334\30\0\0\0\0\0,\334\30\0\0\0\0\0,\334\30\0\0\0\0\0\214j\0\0\0\0\0\0\214j\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0R\345td\4\0\0\0\0'\34\0\0\0\0\0\0'<\0\0\0\0\0\0'<\0\0\0\0\0\0009\0\0\0\0\0\0\0009\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0Bj\4dsR0\206(\362\t\0320\323G\355\356\336\327\207\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\6\0\0\0 \0\0\0\0\0\0\0\363\3\0\0\7\0\0\0\0\1\0\0\16\0\0\0\0000\20D\240 \2\1\210\3\346\220\305E\214\0\300\0\10\0\5\200\0`\300\200\0\r\212\f\0\4\20\0\210D2\10.@\210T<, \0162H&\204\300\214\4\10\0\2\2\16\241\254\32\4f\300\0\3002\0\300\0P\1 \201\10\204\v  ($\0\4 Z\0\20X\200\312DB(\0\6\200\20\30B\0 @\200\0\tP\0Q\212@\20\0\0\0\0\10\0\0\21\20", 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2151672, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f441c990000
mmap(NULL, 3981792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f441b4d4000
mprotect(0x7f441b696000, 2097152, PROT_NONE) = 0
mmap(0x7f441b896000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c2000) = 0x7f441b896000
mmap(0x7f441b89c000, 16864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f441b89c000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f441c98f000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f441c98d000
arch_prctl(ARCH_SET_FS, 0x7f441c98d740) = 0
mprotect(0x7f441b896000, 16384, PROT_READ) = 0
mprotect(0x7f441bab5000, 4096, PROT_READ) = 0
mprotect(0x7f441bdb7000, 4096, PROT_READ) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f441c98c000
mprotect(0x7f441c0a1000, 32768, PROT_READ) = 0
mprotect(0x7f441c2c2000, 4096, PROT_READ) = 0
mprotect(0x7f441c778000, 61440, PROT_READ) = 0
mprotect(0x603000, 4096, PROT_READ)     = 0
mprotect(0x7f441c9b5000, 4096, PROT_READ) = 0
munmap(0x7f441c992000, 138230)          = 0
brk(NULL)                               = 0xa50000
brk(0xa71000)                           = 0xa71000
getcwd("/dl/libsass", 4096)             = 12
getcwd("/dl/libsass", 4096)             = 12
getcwd("/dl/libsass", 4096)             = 12
getcwd("/dl/libsass", 4096)             = 12
stat("/dl/libsass/test.scss", {st_mode=S_IFREG|0644, st_size=162, ...}) = 0
open("/dl/libsass/test.scss", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=162, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f441c9b3000
read(3, ".one-screen-page {\n\t@extend %context-dark;\n}\n\n%context-dark {\n\t.button-secondary-outline {\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active,\n\t\t&:hover {\n\t\t\tcolor: #fca;\n\t\t}\n\t}\n}\n", 4096) = 162
close(3)                                = 0
munmap(0x7f441c9b3000, 4096)            = 0
getcwd("/dl/libsass", 4096)             = 12
getcwd("/dl/libsass", 4096)             = 12
brk(NULL)                               = 0xa71000
brk(0xa92000)                           = 0xa92000
strace: Process 9893 detached
Bug - Confirmed Dev - PR Ready Dev - Test Written

All 16 comments

@mgreter - seems like this was introduced at f964dcd

Thanks @futureweb, this seems to be an issue of the ported dart sass code:

dart D:\github-sass\dart-sass\bin\sass.dart 2994.scss
Unsupported operation: serialization of generic Expressions
#0      BinaryPrinter.defaultExpression (package:kernel/binary/ast_to_binary.dart:2100:5)
#1      _ForInElement&Expression&ControlFlowElement.accept (package:front_end/src/fasta/kernel/collections.dart:53:44)
#2      BinaryPrinter.writeNode (package:kernel/binary/ast_to_binary.dart:375:10)
#3      LimitedBinaryPrinter.writeNode (package:kernel/binary/limited_ast_to_binary.dart:56:11)
#4      BinaryPrinter.writeNodeList (package:kernel/binary/ast_to_binary.dart:294:7)
#5      BinaryPrinter.visitArguments (package:kernel/binary/ast_to_binary.dart:1453:5)
#6      Arguments.accept (package:kernel/ast.dart:2748:30)

Can you try it with dart sass too and see what you get?
If it fails for you too it would be great if you could report to dart sass too.

Thanks!

@mgreter tested with dart-sass 1.23.0 and snippet compiles without problems

scss source:

.one-screen-page {
    @extend %context-dark;
}

%context-dark {
    .button-secondary-outline {
        &:hover,
        &:focus,
        &:active,
        &:hover {
            color: #fca;
        }
    }
}

Result of dart-sass:

.one-screen-page .button-secondary-outline:hover, .one-screen-page .button-secondary-outline:focus, .one-screen-page .button-secondary-outline:active {
  color: #fca;
}

/*# sourceMappingURL=test.css.map */

@futureweb any chance you can try it with dart-sass master from github directly?

@mgreter - just tested it with latest dart-sass master - same result as with 1.23.0 --> working

OK, thanks, will try again when I'm home. Not sure why I get an error in dart sass.

alright - just drop me a line if you need further tests from me! ;-)

The issue is in extender.cpp ~ line 1080. Seems something with rotateSlice is not fine.
Will give it a quick shot now, but not sure when I have time to really look into it ...
Edit: After upgrading dart-sdk the error is gone so I can at least compare both impls.

And the culprit is the duplicate &:hover selector (you can safely remove one to get it working).

Can you try to patch eval.cpp around line 2120?

- selectorStack.emplace_back(evaled);
+ selectorStack.emplace_back(SASS_MEMORY_COPY(evaled));

This seems to fix the issue for me. But need to check further
why we need two copies and the original here ...

@mgreter - I would ... if I could find it?!?
eval.cpp only got 1530 Lines for me, als also "selectorStack.emplace_back(evaled);" is not found within this file? Actually I can't find "selectorStack.emplace_back(evaled);" anywhere in the Code? What do I overlook? 馃

Sorry, seems I was referencing my latest refactoring branch. It makes your case pass, but fails two circular extend spec tests. Looks like this is more complicated than expected :(

haha - was already puzzled what you are refering to ... ;-)
... nasty little Bug! :-/

Please try with https://github.com/sass/libsass/pull/2995. We still need a spec test for this ...

sorry for late reply - have overlooked your comment :-/
Just tested your fix and it's working like a charm ... thx!! ;-)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

holmesmr picture holmesmr  路  3Comments

xzyfer picture xzyfer  路  11Comments

luiscla27 picture luiscla27  路  10Comments

xzyfer picture xzyfer  路  9Comments

mikeebee picture mikeebee  路  8Comments