Here is a simple example that demonstrates this problem:
from scapy3k.all import *
# NOP option
packet = Ether()/IP()/TCP(options=[('NOP',None)])
print(packet[TCP].options) #this works
print(bytes(packet)) #this works
# SAckOK option
packet = Ether()/IP()/TCP(options=[('SAckOK',None)])
print(packet[TCP].options) #this works
print(bytes(packet)) #this breaks
This probably has something to do with the fact that the selective ACK has a length field of 2, but no data.